1

我有这些日期如下的 mongo 文档:这个日期是 java: ZonedDateTime.now(),但它作为字符串进入 mongo:
db.test.insert({"dateString" : "2020-07-24T11:06:53.975+02:00[GMT+02:00]"})

所以我想提取一份报告,但将其格式化为最新的,所以我可以在管道中做一些改变:
试过:

db.test.aggregate([{$project: {date: {"$dateFromString": {"dateString": "$dateString", "format": "yyyy-MM-dd'T'HH:mm:ss", "timezone": "Etc/GMT+2"}}}}])

但我似乎无法获得正确的格式:
找不到格式文字'9';21:未找到格式文字'7';22:未找到格式文字'5';23: 尾随数据 '+'"

4

1 回答 1

1

日期运算符不会理解自定义格式,也不会理解偏移时区

  • $substr仅选择 0 到 23 个字符的日期
  • 将时区设置为“GMT”
db.test.aggregate([
  {
    $project: {
      date: {
        "$dateFromString": {
          "dateString": {
            "$substr": [ "$dateString", 0, 23 ]
          },
          "timezone": "GMT"
        }
      }
    }
  }
])

操场

于 2021-06-10T17:11:50.660 回答