我有一个类似的文档
{
"name": "abc"
"array1": [
{
"_id": "87a015b3-b81c-4c75-8dd6-4fa0bd6d9660",
"array2": [
[
{
"_id": "123",
"values": [{
"value": "ABC"
}
]
},
.....
.....
],
[
{
"_id": "789",
"values": [{
"value": "XYZ"
}
]
},
.....
.....
]
]
}
]
}
如何使用$ elemMatch来基于_id和值进行过滤? 例如,如果在array1.array2中存在“ _id” =“ 123”且“ value” =“ ABC”的条目,则匹配。
答案 0 :(得分:1)
您可以这样做:
db.collection.find(
{"array1.array2": {$elemMatch: {$elemMatch: {_id: "123", "values.value": "ABC"}}}}
)
我个人建议你们重新考虑您的文档结构,因为目前我觉得这对我来说没有多大意义。