使用多个过滤器查询双嵌套数组

时间:2017-04-27 20:32:14

标签: arrays mongodb nested

这是我的数据:

{
    "_id": 1,
    "items": [
        [{"name": "a"}, {"size": 2}, {"color": "red"}],
        [{"name": "b"}, {"size": 4}, {"color": "blue"}],
        [{"name": "c"}, {"size": 6}, {"color": "pink"}]
    ]    
},
{
    "_id": 2,
    "items": [
        [{"name": "a"}, {"size": 3}, {"color": "black"}],
        [{"name": "e"}, {"size": 6}, {"color": "blue"}],
        [{"name": "g"}, {"size": 9}, {"color": "pink"}]
    ]    
}

我需要做这样的事情:

db.foo.find({items.name: "a", items.color: "red"})

它不能正常工作

2 个答案:

答案 0 :(得分:0)

为此,您可以使用$elemMatch关键字。

db.foo.find({items: {$elemMatch: {name: "a", color: "red"} } });

这应该允许匹配数组中文档的多个字段。

答案 1 :(得分:0)

我找到了这个解决方案:

db.foo.find({ 
    items: {
        $elemMatch: {
            $all: [
                {$elemMatch: {"name": "a"}},
                {$elemMatch: {"color": "red"}}
               ]
         }
    }
});

谢谢你们!