2

我对 MongoDB 相当陌生,我正在使用聚合框架。文档中的一个示例显示以下内容,它返回每月新用户加入的总数并列出加入的月份:

db.users.aggregate(
  [
    { $project : { month_joined : { $month : "$joined" } } } ,
    { $group : { _id : {month_joined:"$month_joined"} , number : { $sum : 1 } } },
    { $sort : { "_id.month_joined" : 1 } }
  ]
)

代码输出以下内容:

{
  "_id" : {
    "month_joined" : 1
  },
  "number" : 3
},
{
  "_id" : {
    "month_joined" : 2
  },
  "number" : 9
},
{
  "_id" : {
    "month_joined" : 3
  },
  "number" : 5
}

是否也可以让每个对象都包含从一开始就加入的所有用户的总和,这样我就不必以编程方式遍历对象并自己计算它?

示例所需的输出:

{
  "_id" : {
    "month_joined" : 1
  },
  "number" : 3,
  "total": 3
},
{
  "_id" : {
    "month_joined" : 2
  },
  "number" : 9,
  "total": 12
},
{
  "_id" : {
    "month_joined" : 3
  },
  "number" : 5,
  "total": 17
}
4

0 回答 0