这是我的数据:
{
"_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"})
它不能正常工作
答案 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"}}
]
}
}
});
谢谢你们!