来自数据库的示例文档
{
"_id": ObjectId("54f44a657f8b9a1d318b4567"),
// other fields
"ligaments": [
[
{
"data": "dia",
"order": 0
},
{
"data": "hub",
"order": 1
}
],
[
{
"data": "pcd",
"order": 0
},
{
"data": "width",
"order": 1
}
]
]
}
我需要找到ligaments
字段包含data: 'parameter'
属性的所有条目。我如何进行这样的查询?
答案 0 :(得分:0)
如果要在嵌套数组中搜索,可以使用$elemMatch
运算符进行搜索:
//returns all the documents that have data equal to 'pcd' or 'width'
db.collection.find({ligaments: {$elemMatch: {$elemMatch: { data: {$in: ['pcd', 'width']}}}}});
如果要指定用户定义的参数,可以自定义查询:
//returns all the documents that have data equal to 'parameter'
db.collection.find({ligaments: {$elemMatch: {$elemMatch: { data: 'parameter'}}}});
答案 1 :(得分:0)
首先你的文档结构很复杂,但是,如果你想找到你的输出,那么试试下面的脚本
db.collectionName.aggregate({
"$unwind": "$ligaments"
}, {
"$unwind": "$ligaments"
}, {
"$match": {
"ligaments.data": {
"$in": ["pcd", "width"]
}
}
}, {
"$project": {
"_id": 0,
"ligaments": "$ligaments"
}
})