MongoDB-从聚合查询中获取单个元素

时间:2019-06-29 18:01:26

标签: database 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"
}

我该怎么做?

2 个答案:

答案 0 :(得分:0)

如果您需要结果,请运行此查询,

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

答案 1 :(得分:0)

因此,您可以尝试以下查询:

 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'}}]);