在MongoDB中使用$ all匹配数组值的多个$ elemMatch表达式?

Chr*_*n P 12 mongodb

在一个问题的答案中,我发现了一个使用$ elemMatch搜索数组值的有趣解决方案.

如果我们的藏品中有以下文件:

{
    foo : [ { bar : "xy", baz : 1 },
            { bar : "a", baz : 10 } ]
},
{
    foo : [ { bar : "xy", baz : 5 },
            { bar : "b", baz : 50 } ]
}
Run Code Online (Sandbox Code Playgroud)

以下查询仅匹配第一个文档:

db.test.find({
    foo : { "$all" : [ { "$elemMatch" : { bar : "xy", baz : 1} }, { "$elemMatch" : { bar : "a", baz : 10 } } ] }
});
Run Code Online (Sandbox Code Playgroud)

我尝试了几个其他的例子,它确实有效.但$ all运算符的官方文档没有说明如何组合这两个查询.

这是预期的行为还是错误?或者这只是一个问题,文档没有涵盖这个用例?

Sid*_*Sid 6

这是预期的行为.该文档未涵盖此用例,我们正在努力使其更好.但是,很难记录每个可能的查询组合.

  • 感谢您的信息.我知道很难记录每个组合,但知道一些运算符可以合并是非常有用的. (2认同)