我正在使用以下聚合查询:
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"
}
我该怎么做?
答案 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'}}]);