我是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聚合,但无法添加一个对整个集合进行查询的字段。
任何想法?
答案 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}}
])