在对question的回答中,我发现了一个使用$ elemMatch搜索数组值的有趣解决方案。
如果我们的收藏中有以下文件:
{
foo : [ { bar : "xy", baz : 1 },
{ bar : "a", baz : 10 } ]
},
{
foo : [ { bar : "xy", baz : 5 },
{ bar : "b", baz : 50 } ]
}
以下查询仅匹配第一个文档:
db.test.find({
foo : { "$all" : [ { "$elemMatch" : { bar : "xy", baz : 1} }, { "$elemMatch" : { bar : "a", baz : 10 } } ] }
});
我尝试了几个其他的例子,它确实有效。但是$all运算符的官方文档没有说明如何组合这两个查询。
这是预期的行为还是错误?或者这仅仅是文档未涵盖此用例的问题?
答案 0 :(得分:5)
这是预期的行为。该文档未涵盖此用例,我们正在努力使其更好。但是,很难记录每个可能的查询组合。