如何在mongodb中按月分组文档?

时间:2015-11-27 07:14:21

标签: mongodb mongodb-query aggregation-framework

我在mongodb中有一组交易数据,如下所示:

db.getCollection('transaction').aggregate([
  { $group: {_id: "$timestamp", total: {$sum: "$nominal"} } }
])

如何使用mongodb的aggregate()来计算每个月的总交易量? 我试着用

timestamp

由于我使用month而不是month,因此失败了。我不想为Array添加另一个字段到事务数据。我想一下$ group管道的自定义函数,它返回月份值。 可能吗 ?如果是这样,怎么样?

1 个答案:

答案 0 :(得分:3)

您需要一个初步$project阶段,您可以使用$month运算符返回"月"。

 db.transaction.aggregate([
    { "$project": {
        "nominal": 1, 
        "month": { "$month": "$timestamp" }
    }}, 
    { "$group": {
        "_id": "$month", 
        "total": { "$sum": "$nominal" }
    }}
])

返回:

{ "_id" : 12, "total" : 30.121 }
{ "_id" : 11, "total" : 76.363 }