mongoDB:$dateToString 格式以 15 分钟间隔显示时间

Posted

技术标签:

【中文标题】mongoDB:$dateToString 格式以 15 分钟间隔显示时间【英文标题】:mongoDB: $dateToString format to show time by 15min interval 【发布时间】:2020-07-22 16:07:13 【问题描述】:

我这里有一个例子, https://mongoplayground.net/p/fqxBy6NAZXL

如您所见,最终结果包含“dateHour”和“minuteBucket”字段。 我将时间除以 15.0 分钟,因此“minuteBucket”值将始终为 0、1、2、3 之一

“dateHour”现在不显示分钟。

预期:

我需要删除“minuteBucket”字段,但仍将此聚合除以 15 分钟,并显示带有 HH:MM 的“dateHour”,它总是以 15 分钟向上取整。 例如,根据它的时间,它应该看起来像这种格式。

"2020-03-19T18:00:00", "2020-03-19T18:15:00","2020-03-19T18:30:00","2020-03-19T18:45:00"

【问题讨论】:

【参考方案1】:

可以使用$dateFromString解析dateHour,然后加上_id.minutebucket乘以900000(15分钟*60秒*1000毫秒):


    dateHour: 
        $let: 
            vars:  parsedDate:  $dateFromString:  dateString: "$_id.dateHour", format: "%Y-%m-%dT%H"   ,
            in:  $toString: [  $add: [ "$$parsedDate",  $multiply: [ "$_id.minuteBucket", 900000 ]  ]  ] 
        
    

Mongo Playground

【讨论】:

让我指出,您现在连续 2 天节省了我的许多时间。多谢。我应该有你的电子邮件地址,以防万一我在 mognodb 查询中遇到问题,哈哈...谢谢 顺便说一句,我还需要从投影字段中删除 minuteBucket。如果我现在删除它,它会破坏查询。你能帮忙吗? @newdeveloper 仅从最后阶段删除它 成功了。我正在做这分钟Bucket:0,它给出了错误谢谢 我在 shell 脚本中使用它,但它给了我错误,不确定语法中缺少什么 -- ZONE_AGGREGATE_COMMAND+=' dateHour: $let: vars: parsedDate: $dateFromString: dateString: "$_id.dateHour",格式: "%Y-%m-%dT%H",in: $toString: [$add: ["$$parsedDate",$multiply: ["$ _id.minuteBucket",900000]]],'

以上是关于mongoDB:$dateToString 格式以 15 分钟间隔显示时间的主要内容,如果未能解决你的问题,请参考以下文章

MongoDB:如何在 3.6 mongoDb 版本中解析日期?

MongoDB:如何在 3.6 mongoDb 版本中解析日期?

需要在java中以不同格式格式化字符串日期[关闭]

MongoDB:使用嵌套的 $group 聚合

使用 pymongo 在 mongodb 中按多个值分组

java DateToStr