我有一个书评集合,我试图在其中找到创建多条评论的用户(比如 5 个),我还想返回评论数量、他们的唯一 ID 和他们的姓名。
到目前为止,我已经设法通过聚合找到了一种方法,但是在我的一生中,我似乎无法返回 name 字段,我认为一个简单的 $project 就可以了,但我只能看到 ID以及某人发表的评论数量,我还缺少什么来解决这个问题?
当前代码:
db.bookreviews.aggregate([
{"$group": {"_id": "$reviewerID","NumberOfReviews": { "$sum": 1 }}},
{"$match": {NumberOfReviews: {"$gte": 5}}},
{"$project":{_id:1,NumberOfReviews:1, reviewerName:1}},
])
返回值:
{IDXYZ, NumberofReviews 5},
{IDABC, NumberofReviews 5},
{ID123, NumberofReviews 5}
答案 0 :(得分:0)
您可以使用 $first
保留该组的第一个文档,并在 reviewerName
阶段保留 $group
的值,您可以删除 $project
。>
db.bookreviews.aggregate([
{"$group": {"_id": "$reviewerID","NumberOfReviews": { "$sum": 1 }, "reviewerName": { "$first": "$reviewerName" } } },
{"$match": {"NumberOfReviews": {"$gte": 5}}},
])