我有一个图书评论的集合,我试图找到创建了多个评论的用户(假设是5个),我还想返回评论的数量,他们的唯一ID和他们的名字。
到目前为止,我已经设法找到了一种通过聚合做到这一点的方法,但是对于我的生活,我似乎不能返回名称字段,我认为一个简单的$项目会很好,但相反,我只能看到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}
您可以使用$first
来保留该组的第一个文档,并将reviewerName
的值保留在您的$group
阶段,您可以删除$project
。
db.bookreviews.aggregate([
{"$group": {"_id": "$reviewerID","NumberOfReviews": { "$sum": 1 }, "reviewerName": { "$first": "$reviewerName" } } },
{"$match": {"NumberOfReviews": {"$gte": 5}}},
])