【发布时间】:2018-11-27 09:38:27
【问题描述】:
我有两个收藏:
学生
{
_id: ObjectId("657..."),
name:'abc'
},
{
_id: ObjectId("593..."),
name:'xyz'
}
图书馆
{
_id: ObjectId("987..."),
book_name:'book1',
issued_to: [
{
student: ObjectId("657...")
},
{
student: ObjectId("658...")
}
]
},
{
_id: ObjectId("898..."),
book_name:'book2',
issued_to: [
{
student: ObjectId("593...")
},
{
student: ObjectId("594...")
}
]
}
我想加入 Student 集合,该集合存在于 Library 集合的 issued_to 对象字段数组中。
我想对学生收藏进行查询以获取学生数据以及图书馆收藏,如果学生存在或不存在,则将检查issued_to数组,否则获取图书馆文档。 我试过 $lookup 的 mongo 3.6 但我没有成功。
db.student.aggregate([{$match:{_id: ObjectId("593...")}}, $lookup: {from: 'library', let: {stu_id:'$_id'}, pipeline:[$match:{$expr: {$and:[{"$hotlist.clientEngagement": "$$stu_id"]}}]}])
但它会引发错误,请在这方面帮助我。我还查看了在 stackoverflow 上提出的其他问题,例如。 question on stackoverflow, question2 on stackoverflow 但这些是比较简单的字段而不是对象数组。请帮帮我
【问题讨论】:
标签: mongodb mongodb-query aggregation-framework