- android - RelativeLayout 背景可绘制重叠内容
- android - 如何链接 cpufeatures lib 以获取 native android 库?
- java - OnItemClickListener 不起作用,但 OnLongItemClickListener 在自定义 ListView 中起作用
- java - Android 文件转字符串
我有两个系列:
学生
{
_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 数组,如果存在则获取图书馆文档,否则不获取。我尝试了 mongo 3.6 的 $lookup 但我没有成功。
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但这些是比较简单的字段而不是对象数组。请帮助我
最佳答案
我不确定我是否完全理解您的问题,但这应该对您有所帮助:
db.student.aggregate([{
$match: { _id: ObjectId("657...") }
}, {
$lookup: {
from: 'library',
localField: '_id' ,
foreignField: 'issued_to.student',
as: 'result'
}
}])
如果您只想获取每个学生的所有 book_name
,您可以这样做:
db.student.aggregate([{
$match: { _id: ObjectId("657657657657657657657657") }
}, {
$lookup: {
from: 'library',
let: { 'stu_id': '$_id' },
pipeline: [{
$unwind: '$issued_to' // $expr cannot digest arrays so we need to unwind which hurts performance...
}, {
$match: { $expr: { $eq: [ '$issued_to.student', '$$stu_id' ] } }
}, {
$project: { _id: 0, "book_name": 1 } // only include the book_name field
}],
as: 'result'
}
}])
关于mongodb - $lookup 当 foreignField 在嵌套数组中时,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/50911196/
我正在尝试在 mongoose 中创建一个虚拟填充器,但我在这方面遇到了困难,我不知道这是一个限制、一个错误,还是我做错了什么。 我的想法是,一个用户可以是多个组的成员,然后我可以通过查询在组数组中具
db.tempCollection.aggregate( { $lookup: { "from" : "SensorInfo", "localField" :
我有两个系列: 学生 { _id: ObjectId("657..."), name:'abc' }, { _id: ObjectId("593..."),
我在弄清楚如何在提交表单时自动为 ForeignKey 字段创建模型实例时遇到了很多麻烦。这是一个说明问题的简单玩具网站: 我有两个模型,模型 1 和模型 2。 Model2 包含 Model1 的
我有一个 Schema Events,它有一个键 creator,它是对创作者的引用,还有一个键 musicians,它是一个数组音乐家。 音乐家可以创建事件 或作为音乐家参与。我想为音乐家创建一个名
我有一个包含多个 Django“应用程序”的 Django 项目。其中之一具有表示来自外部源的数据的模型(我不控制此数据)。 我希望我的其他应用程序能够引用这个“外部应用程序”,但我想避免数据库完整性
我想执行 $lookup,其中 localField 是 ObjectId 的字符串表示形式,而外部字段是实际的 ObjectId。 如果 items 是字符串值但 _id 是 ObjectId,Mo
我是一名优秀的程序员,十分优秀!