11
在对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运营商的官方文档没有说明有关组合这两个查询的任何内容。
这是预期的行为或错误?或者这只是文档不包含此用例的问题?
感谢您的信息。我知道很难记录每一个组合,但知道一些运营商可以合并是非常有用的。 – 2012-03-22 16:05:54
有没有办法做到这一点呢? – 2014-08-03 10:11:14