如何查询此嵌套的json结构以查找包含“A”的文档?
"categories":[{"id":12,"values":[["A","B","C"]]},{"id":17,"values":[["D","E","F"]]}]
到目前为止,我只能通过
设法获得id值db.coll.find( {categories: { $elemMatch: { id: 12 }}} )
答案 0 :(得分:2)
您需要嵌套$elemMatch
运算符以匹配数组的嵌套级别以匹配元素:
db.coll.find({
"categories": {
"$elemMatch": {
"values": {
"$elemMatch": {
"$elemMatch": { "$in": ["A"] }
}
}
}
}
})
答案 1 :(得分:2)
尽管Neil的答案可行,但您只能使用两个$elemMatch
运算符,而不是三个运算符,以简化它。
您可以使用dot notation转到values
属性,然后您可以使用嵌套的$elemMatch
运算符来检查嵌套数组值:
db.coll.find({
"categories.values" : {
$elemMatch : {
$elemMatch : { $in : ["A", "B"] }
}
}
});