【发布时间】:2019-05-14 19:10:36
【问题描述】:
如何在 mongodb 中查询嵌入文档的数组。
{
_id: 1,
zipcode: "63109",
students: [
{ name: "john", school: 102, age: 14 },
{ name: "jess", school: 102, age: 11 },
{ name: "jeff", school: 108, age: 15 }
]
}
{
_id: 2,
zipcode: "63110",
students: [
{ name: "ajax", school: 100, age: 7 },
{ name: "achilles", school: 100, age: 8 },
]
}
{
_id: 3,
zipcode: "63109"
}
假设对于上述数据,如何仅检索年龄>=7 和年龄
编辑:- 当我做过滤器时,我得到的输出看起来像这样。但我不想要有“无”的行。 最后一个文档 _id: 3 没有字段学生,但对学生进行了过滤,因此输出具有对应的“无”。
我想处理两种情况:
- 如果 id 下不存在数组“students”,则不应应用过滤。
- 数组学生存在但为空 []
如果只是过滤,这两种情况都会在输出中结束。
{'_id': ObjectId('5cdaefd393436906b016ddb4'),
'students': [{'name': ajax,
'school': '100',
'age': '7'},
{'name': achilles,
'school': '100',
'age': '8'}],
{'_id': ObjectId('5cdaefd393436906b016ddb3'), 'students': None}
注意:我使用的是不同但相同的数据集,因此输出不准确,但我希望您能理解。 “学生”是一个嵌入文档,它可能出现在所有文档中,也可能不出现在所有文档中。
编辑:最后我使用 unwind 来实现我想要的。
【问题讨论】:
标签: mongodb mongodb-query aggregation-framework