小编mew*_*ewc的帖子

$lookup 双重嵌套外部字段

我有 2 个集合:

用户

{
    id: 1,
    name: "Michael", 
    starred: [1, 2]
}
Run Code Online (Sandbox Code Playgroud)

学校

{
    id: 1,
    name: "Uni", 
    faculties: [{
        id:1000, 
        name: "faculty1", 
        subjects: [
            {id: 1, name: "sub1"},
            {id: 2, name: "sub2"},
            {id: 3, name: "sub3"}
        ]
    }]
}
Run Code Online (Sandbox Code Playgroud)

现在,在我的用户集合中,我想查找并收集每个主题对象,其 ID 在已加星标中找到。IE。starred: [1,2]包含id我想要的主题。

所以最终结果应该返回

[{id: 1, name: sub1},{id: 2, name: sub2}]
Run Code Online (Sandbox Code Playgroud)

我目前正在使用 whis 聚合管道

{$match: {name: 'Michael'}},
{$unwind: "$faculties"},
{$unwind: "$faculties.subjects"},
{$lookup:
  {
     from: 'schools',
     localField: 'starred',
     foreignField: 'faculties.subjects.id',
     as: 'starredSubjects'
   }
},
{$project: …
Run Code Online (Sandbox Code Playgroud)

mongodb mongodb-query aggregation-framework

1
推荐指数
1
解决办法
1611
查看次数