如何解决在MongoDB聚合管道中,如何用数组字段替换root?
假设我有一个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"),]
replaceRoot
阶段似乎只有在角色字段是文档而不是数组的情况下才起作用,在这种情况下会引发错误。
解决方法
这有效:
vhandles
版权声明:本文内容由互联网用户自发贡献,该文观点与技术仅代表作者本人。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如发现本站有涉嫌侵权/违法违规的内容, 请发送邮件至 dio@foxmail.com 举报,一经查实,本站将立刻删除。