2012-09-20 179 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