MongoDB $ all / $ elemMatch的问题

时间:2012-09-20 20:08:35

标签: mongodb

我想知道是否有其他人在MongoDB中遇到过这个问题。

我正在尝试使用$elemMatch搜索另一个数组中的数组,然后查看此文档中的嵌套值是否在我提供的值数组中。

下面是一个简单的例子:

db.p.insert({v: [{o: [{s: {e: ["M"] }} ]} ]});
db.p.findOne({"v.o": {"$all": [{"$elemMatch": {"s.e": {"$in": ["M"]}}}]}});
null

注意,$all语句的原因是我希望能够匹配几个不同的字段,其中每个字段不一定存在于数组中的文档中。

1 个答案:

答案 0 :(得分:0)

$all用于将数组属性与离散值列表进行匹配,而不是使用$elemMatch等运算符的条件列表。如果您删除$all它的工作原理:

db.p.findOne({"v.o": { $elemMatch: { "s.e": {"$in": ["M"]}}}});