假设我有一个users
集合,其中一个roleIds
字段包含Role
个引用数组。
db.users.aggregate([
{$match:{ _id: ObjectId('5f9453b4484d206714c02a2f') }},
{$project:{ roleIds: 1, _id: 0 }},
{$unwind: "$roleIds"},
{$lookup:{ from: "roles", localField: "roleIds", foreignField: "_id", as: "roles"}}, // <= STEP 4
{$replaceRoot: "$roles"}
])
在STEP 4之后,我会看到以下内容:
{
"roles" : [
{ "_id" : ObjectId("xxxx"), "name" : "role1" },
{ "_id" : ObjectId("xxxx"), "name" : "role2" },
]
}
如何将其转换为此:
[
{ "_id" : ObjectId("xxxx"), "name" : "role1" },
{ "_id" : ObjectId("xxxx"), "name" : "role2" },
]
replaceRoot
阶段似乎只有在角色字段是文档而不是数组的情况下才起作用,在这种情况下会引发错误。
答案 0 :(得分:0)
这有效:
vhandles