[英]Aggregate data stored as time_t in MongoDB
我有一個存儲在MongoDB中的文檔集合,其中包括一個created
字段,作為unix樣式time_t
:
例如
{"created": 1137459055216, "qty": 3 }
如何通過查詢按月匯總此數據?
通過將計數添加到new Date(0)
可以將unix紀元ms計數轉換為本地Date
對象以進行聚合。 例如:
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
是秒計數而不是毫秒計數,則還需要將其乘以1000:
createdDate: {$add: [new Date(0), { $multiply: ['$created', 1000] }]}
聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.