我有 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)