我有一个存储在MongoDB中的文档集合,其中包含created
字段作为unix样式time_t
:
e.g。
{"created": 1137459055216, "qty": 3 }
如何通过查询按月汇总此数据?
答案 0 :(得分:2)
您可以通过将计数添加到Date
,将unix epoch ms计数转换为本机new Date(0)
对象进行聚合。例如:
db.test.aggregate([
{$group: {
_id: {$month: {$add: [new Date(0), '$created']}},
qty: {$sum: '$qty'}
}}
])
或者,如果您希望按月和按年汇总,请添加$project
进行转化,然后您可以在$group
中多次轻松引用它:
db.test.aggregate([
{$project: {
createdDate: {$add: [new Date(0), '$created']},
qty: '$qty'
}},
{$group: {
_id: {
year: {$year: '$createdDate'},
month: {$month: '$createdDate'}
},
qty: {$sum: '$qty'}
}}
])
请注意,如果created
是秒计数而不是ms计数,则还需要将其乘以1000:
createdDate: {$add: [new Date(0), { $multiply: ['$created', 1000] }]}