【问题标题】:Mongodb - aggregationMongodb - 聚合
【发布时间】:2025-12-09 13:30:01
【问题描述】:

在我的 mongoDB 收款中,我的文档结构如下:

{
  "created_at": created_at,
  "amount": amount
  ...
} 

我需要按月对记录进行分组,对每个组的金额求和,并为每个组找到增长,类似这样:

[{
  "created_at": "2014-11-13",
  "amount": 10    
},
{
  "created_at": "2014-11-3",
  "amount": 20    
},
{
  "created_at": "2014-12-13",
  "amount": 30    
},   
{
  "created_at": "2014-12-15",
  "amount": 15    
}]

结果:

[{
 "_id": {"month": 11},
 "amount": 30,
 "growth": null
},
{
 "_id": {"month": 12},
 "amount": 45,
 "growth": 1.5    
}]

是否可以使用聚合管道或 map reduce 或任何其他技术?

【问题讨论】:

  • 欢迎来到 SO,Artyom,如果您先进行一些研究并在您的问题中包含您目前所掌握的内容,则效果最好。这读起来更像是一个不受欢迎的工作指令。
  • 增长的标准是什么?
  • @yogesh growth[i] = amount[i] / amount[i-1]

标签: mongodb mapreduce mongoid aggregation-framework


【解决方案1】:

应该是这样的:

    {
    '$group' : {
        '_id' : {
            'month' : { '$month' : '$created_at'}
        },
        'amount' : { '$sum' : '$amount'}
    }
}

【讨论】: