mongoDB:聚合,在集合中添加计数字段

时间:2018-03-12 10:45:42

标签: mongodb-query aggregation-framework

我是MongoDb的新手并且有一个我正在努力解决的问题。 我有一组报告的用户,如下所示:

{
  "_id": 1,
  "userId": 1,
  "reason": "some reason",
  "date": "2017-07-22"
}

我需要一个查询,它会为每个报告添加该userId的报告数量。 意味着如果集合有3条记录,userId = 1。查询将返回三条记录,每条记录还包含一个字段 count = 3表示上面的记录现在看起来像这样:

{
  "_id": 1
  "userId": 1,
  "reason": "some reason",
  "date": "2017-07-22",
  "count": 3
}

我尝试使用$ project和$ addFields聚合,但无法添加一个对整个集合进行查询的字段。

任何想法?

1 个答案:

答案 0 :(得分:0)

Veeram提供的答案是正确的,只是如果你运行的mongodb版本低于3.6,在聚合的最后阶段你可能想要用$ project替换$ replaceRoot运算符

aggregate([
{$group:{_id:"$userId", "data":{"$push":"$$ROOT"}, count:{$sum:1} } },
{"$unwind":"$data"},
{$project:{_id:"$data._id", userId:"$data.userId", reason:"$data.reason", date:"$data.date", count:1}}
])