MongoDB:如何在 3.6 mongoDb 版本中解析日期? [英] MongoDB: how to parse date in 3.6 mongoDb version?

查看:24
本文介绍了MongoDB:如何在 3.6 mongoDb 版本中解析日期?的处理方法,对大家解决问题具有一定的参考价值,需要的朋友们下面随着小编来一起学习吧!

问题描述

我在这里创建了Mongo Playground

当前输出显示基于 15 分钟时间间隔的结果.(按 15 分钟对 updatedAt 值进行分组并显示某些字段的平均值)

Current output is showing result based on 15min time interval. (grouping updatedAt value by 15mins and shows avg for some field)

目前 $dateToString 和 $dateFromString 正在使用 format 来解析日期.我需要使它适用于 mongo 3.6 版(3.6 不支持 $dateFromString 的格式)

Currently $dateToString and $dateFromString is using format to parse the date. I need to make it work for mongo version 3.6 (3.6 is not supporting format for $dateFromString)

 parsedDate: {
              $dateFromString: {
                dateString: "$_id.dateHour",
                format: "%Y-%m-%dT%H"
              }
            }

如果我从 $dateToString 和 $dateFromString 中删除格式字段,查询仍会运行,但dateHour"的输出显示的值与预期不同.(如下)

If I remove format field from both $dateToString and $dateFromString, query still runs but output for "dateHour" shows different value than expected. (as below)

"dateHour": ISODate("2020-03-20T18:46:50Z"),

3.6 不支持格式字段.必须使此查询与 3.6 版本兼容.最终输出没有变化.

format field is not supported in 3.6. Have to make this query compatible for 3.6 version. Final output has no change.

主要焦点是在此更改后获得相同的dateHour"值.

Main focus is to get "dateHour" value same after this change.

当前输出:

"dateHour": ISODate("2020-03-19T18:30:00Z"),

预期输出:

"dateHour": ISODate("2020-03-19T18:30:00Z"),

推荐答案

使用 $dateToParts 及其对应的 $dateFromParts

这是更新的游乐场

它所做的基本上是将日期分成几个部分:

What it does is basically break the date into its parts:

{
  $project: {
    dateHour: {
      $dateToParts: {
        date: "$updatedAt"
      }
    }
  }
}

会产生:

{
  "dateHour": {
    "day": 19,
    "hour": 18,
    "millisecond": 0,
    "minute": 21,
    "month": 3,
    "second": 5,
    "year": 2020
  }
}

然后你从它的部分重建日期:

and then later you reconstruct the date from its parts:

{
  $project: {
    reconstructedDateHour: {
      $dateFromParts: {
        year: "$dateHour.year",
        month: "$dateHour.month",
        day: "$dateHour.day",
        hour: "$dateHour.hour"
      }
    }
  }
}

这篇关于MongoDB:如何在 3.6 mongoDb 版本中解析日期?的文章就介绍到这了,希望我们推荐的答案对大家有所帮助,也希望大家多多支持IT屋!

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