首页 > 解决方案 > MongoDB - 从聚合查询中获取单个元素

问题描述

我正在使用以下聚合查询:

db.posts.aggregate([
    {
        $lookup: {
            from: "profiles",        
            localField: "user",
            foreignField: "user",
            as: "userDetails"
        }
    }
])

它返回如下所示的结果:

{
    "_id" : ObjectId("5d1523b98d9dd16d832a8c5e"),
    "user" : ObjectId("5d1504e29dc0bd55461adca7"),
    "recipeName" : "Pizza",
    "ingredients" : "Flour and sauce",
    "userDetails" : [ 
        {
            "_id" : ObjectId("5d1505089dc0bd55461adca8"),
            "user" : ObjectId("5d1504e29dc0bd55461adca7"),
            "handle" : "jack",
            "status" : "Developer"
        }
    ]
}

这包括整个“配置文件”作为称为“userDetails”的键。但是,我不想要所有这些信息。我只需要用户的句柄。我希望结果看起来完全像这样:

{
    "_id" : ObjectId("5d1523b98d9dd16d832a8c5e"),
    "user" : ObjectId("5d1504e29dc0bd55461adca7"),
    "recipeName" : "Pizza",
    "ingredients" : "Flour and sauce",
    "handle" : "jack"
}

我怎样才能做到这一点?

标签: databasemongodb

解决方案


所以,你可以试试这个查询:

 db.posts.aggregate([{$lookup: {from: "profiles",        
                localField: "user",foreignField: "user",as: "userDetails"
            }},{'$unwind':'$userDetails'},
        {$project:{ '_id':1, 'user':1, 'recipeName':1, 'ingredients':1, 'handle':'$userDetails.handle'}}]);

推荐阅读