我想查询内部对象,并从mongoddb文档中仅选择过滤的内部对象。
请考虑下面的mongodb文档。
{
"schools": [
{
"name": "ABC",
"students": [
{
"name": "ABC 1",
"class": 1
},
{
"name": "ABC 2",
"class": 2
},
{
"name": "ABC 3",
"class": 1
}
]
},
{
"name": "XYZ",
"students": [
{
"name": "XYZ 1",
"class": 1
},
{
"name": "XYZ 2",
"class": 2
}
]
}
]
}
我只选择第一堂课的学生。 预期结果json如下。
{
"school": {
"name": "ABC",
"students": [
{
"name": "ABC 1",
"class": 1
},
{
"name": "ABC 3",
"class": 1
}
]
},
"school": {
"name": "XYZ",
"students": [
{
"name": "XYZ 1",
"class": 1
}
]
}
}
即使以下结果对我来说也很好。
{
"students": [
{
"name": "ABC 1",
"class": 1
},
{
"name": "ABC 3",
"class": 1
},
{
"name": "XYZ 1",
"class": 1
}
]
}
请帮助我完成此操作。 如果可以提供mongodb查询确实很有帮助。 我在我的应用程序中使用mongodb和spring数据。
答案 0 :(得分:0)
您可以搜索mongo db数组嵌套记录搜索。示例代码在这里。 Document is here.
db.your_collection_name.find({'school.student.class':1})
如果您只希望学生为您的成绩做平面图。 Here is document for flatmap in mongodb
答案 1 :(得分:0)
最后我可以找到查询。 首先,我必须放松并应用匹配条件。这对我来说是工作。
db.{mycollection}.aggregate(
[
{ $unwind: '$schools.students'},
{ $match : { "schools.students.class" : 1 } },
{ $project : { "schools.name" : 1, 'schools.students' : 1 } }
]
);