MongoDb:在mongodb 3.6中将日期字符串转换为特定格式 [英] MongoDb: Convert date string to specific format in mongodb 3.6

查看:446
本文介绍了MongoDb:在mongodb 3.6中将日期字符串转换为特定格式的处理方法,对大家解决问题具有一定的参考价值,需要的朋友们下面随着小编来一起学习吧!

问题描述

我需要在不使用dateFromString运算符中的格式字段的情况下将日期值解析为特定格式.

I need to parse date value to specific format without using format field in dateFromString operator.

蒙戈游乐场

当前情况: 在Mongodb 4.0中,如果我使用下面的代码格式化dateString,它会给我提到的输出.

Current situation : in Mongodb 4.0 if I format dateString using below it code it give me mentioned output.

 parsedDate: {
        $dateFromString: {
          dateString: "$dateS",
          format: format: "%Y-%m-%dT%H"
        }
      }
Output: "parsedDate": ISODate("2020-01-16T08:00:00Z")

由于不支持3.6中的格式字段,因此无法使用. 如何将日期转换为 format: "%Y-%m-%dT%H"在3.6中?

I cannot use format field in 3.6 since its not supported. How do I convert my date to format: "%Y-%m-%dT%H" in 3.6?

推荐答案

我认为以下查询将解决您的问题,因为MongoDB 3.6支持 dateFromString

I think following query will solve your problem because MongoDB 3.6 supports dateFromString

输入:

[
  {
    "dateS": "2020-01-16T08"
  }
]

查询:

db.collection.aggregate([
  {
    "$project": {
      "year": {"$substr": ["$dateS",0,4]},
      "month": {"$substr": ["$dateS",5,2]},
      "day": {"$substr": ["$dateS",8,2]},
      "hour": {"$substr": ["$dateS",11,2]}
    }
  },
  {
    $addFields: {
      "isoString": {
        "$concat": ["$year","-","$month","-","$day","T","$hour",":00:00Z"]
      }
    }
  },
  {
    $addFields: {
      "newDate": {
        $dateFromString: {"dateString": "$isoString"}
      }
    }
  }
])

输出:

[
  {
    "_id": ObjectId("5a934e000102030405000000"),
    "day": "16",
    "hour": "08",
    "isoString": "2020-01-16T08:00:00Z",
    "month": "01",
    "newDate": ISODate("2020-01-16T08:00:00Z"),
    "year": "2020"
  }
]

这篇关于MongoDb:在mongodb 3.6中将日期字符串转换为特定格式的文章就介绍到这了,希望我们推荐的答案对大家有所帮助,也希望大家多多支持IT屋!

查看全文
登录 关闭
扫码关注1秒登录
发送“验证码”获取 | 15天全站免登陆