2012-09-20 148 views
0

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

我试图搜索$elemMatch另一个数组内的数组,然后看看这个文档中的嵌套值是否在我提供的数组数组中。

下面有一个简单的例子:

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

注意,为$all声明的原因是,我希望能够匹配几个不同的领域,每个领域并不一定对文件存在在数组中。

回答

0

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

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

据:[链接](http://stackoverflow.com/questions/9824341/multiple-elemmatch-expressions-for-matching-array-values-using-all在mongodb)它确实支持匹配使用$ elemMatch .. – Archan

+0

有趣的...无证的功能! – JohnnyHK