如何访问 isodate 字段的分钟 mongodb

How to access minutes of isodate field mongodb

我有一个 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' 是显示分钟的字段。

这是我收到的消息:

这是 isodate 格式的样子:

您似乎没有将日期存储为 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);
})