簡體   English   中英

聚合在MongoDB中存儲為time_t的數據

[英]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.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM