首页 > 解决方案 > Mongo DB聚合管道中不会显示特定字段

问题描述

我有一个书评集合,我试图在其中找到创建了多个评论的用户(比如说 5 个),我还想返回评论的数量、他们的唯一 ID 和他们的名字。

到目前为止,我已经设法通过聚合找到了一种方法,但是对于我的生活,我似乎无法返回 name 字段,我认为一个简单的 $project 就可以了,但我只能看到 ID 和 Number有人做出的评论,我缺少什么来解决这个问题?

当前代码:

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}

标签: mongodb

解决方案


您可以使用$first保留该组的第一个文档并将 的值保留reviewerName在您的$group阶段,您可以删除$project.

db.bookreviews.aggregate([   
    {"$group": {"_id": "$reviewerID","NumberOfReviews": { "$sum": 1 }, "reviewerName": { "$first": "$reviewerName" } } }, 
    {"$match": {"NumberOfReviews": {"$gte": 5}}},
])

推荐阅读