我有一些像这样的数据结构
{
a: 1,
array1: [
{
b: 2
array2: [
{
// this is my target
c: 3,
d: 3
},
{
c: 4,
d: 4
}
]
},
{
b: 3
array2: [
{
c: 5,
d: 5
},
{
c: 6,
d: 6
}
]
}
]
}
我知道使用{"array1" : {"$elemMatch" : {"b" : 2} } }
来匹配第一级array1的元素。但我不知道如何匹配array1的array2的元素{c: 3, d: 3}
。
答案 0 :(得分:7)
$elemMatch
用于表示同一嵌套结构中多个字段之间的关联。
例如。如果您要查询c和d并且需要它们属于同一个子文档,您可以查询它。
{"array1.array2" : {"$elemMatch" : {"c" : 3, "d":3} } }
注意:如果你在单个字段上查询,你真的不需要使用$elemMatch
(因为没有关联)
例如,在您的查询示例中,您可以改为执行
{"array1.b" : 2}
答案 1 :(得分:3)
{
"array1": {
"$elemMatch": {
"array2": {
"$elemMatch": {
"c": 3
}
}
}
}
}