如何访问 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);
})
我有一个 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);
})