Warning: file_get_contents(/data/phpspider/zhask/data//catemap/3/arrays/14.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181

Warning: file_get_contents(/data/phpspider/zhask/data//catemap/6/mongodb/12.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Arrays 使用多个筛选器查询双嵌套数组_Arrays_Mongodb_Nested - Fatal编程技术网

Arrays 使用多个筛选器查询双嵌套数组

Arrays 使用多个筛选器查询双嵌套数组,arrays,mongodb,nested,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":

这是我的数据:

{
    "_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”})


它不起作用

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

db.foo.find({items: {$elemMatch: {name: "a", color: "red"} } });
这应该允许在一个数组中的文档的多个字段上进行匹配。

我找到了以下解决方案:

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

谢谢大家

我的集合的可能重复项不同。请尝试类似以下操作:
db.foo.find({items:{$all:[“name”:“a”],[“color”:“red”]})如果有效,请告诉我它不起作用。我得到一个错误->意外令牌: