mongodb查询嵌套结构

时间:2014-07-01 23:48:57

标签: mongodb mongodb-query

如何查询此嵌套的json结构以查找包含“A”的文档?

"categories":[{"id":12,"values":[["A","B","C"]]},{"id":17,"values":[["D","E","F"]]}]

到目前为止,我只能通过

设法获得id值
db.coll.find( {categories: { $elemMatch: { id: 12 }}} )

2 个答案:

答案 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"] }
        }
    }
});