如何访问isodate字段的分钟mongodb

时间:2017-10-23 10:40:07

标签: database mongodb isodate

我有一个mongodb数据库,其中文档的每一行都有一个日期字段(格式ISO日期)。

我正在尝试在日期字段中访问小时和分钟,并且,对于每小时的每分钟,显示行数(通知可以是一分钟的多行)。输出将是这样的:

11:20   5
11:41   1
13:20   8
15:30   11

第一列是时间(小时:分钟),第二列是与该时间对应的行数。

这是我在mongodb中执行的命令:

db.user.aggregate([{$group: {_id: {hora: {$hour: '$created_at'}, minuto: {$minute: '$created_at'}}, total: {$sum: 1}}}])

其中' hora'是显示小时和'minuto'的字段。显示分钟的字段。

这是我得到的消息:

enter image description here

这是isodate格式的外观: enter image description here

1 个答案:

答案 0 :(得分:1)

您似乎没有将日期存储为ISODate,而是将其存储为ISODate格式的字符串。

当您运行find查询时,它应该显示为 "created_at" : ISODate("2016-11-01T11:46:03.000Z")

而不是:

"created_at" : "2016-11-01T11:46:03.000Z"

您编写的代码是正确的。

您需要将字符串转换为ISODates。

您可以在mongoshell中触发此查询:

db.user.find().forEach(function(doc){
    doc.created_at = new Date(created_at)
    db.user.save(doc);
})