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

时间:2012-03-22 14:32:21

标签: mongodb

在对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运算符的官方文档没有说明如何组合这两个查询。

这是预期的行为还是错误?或者这仅仅是文档未涵盖此用例的问题?

1 个答案:

答案 0 :(得分:5)

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