2016-04-06 112 views
1

假設我有一個蒙戈文件看起來類似於以下內容:嵌入式列表查詢陣列

{ 
    'foo':1 
    'listOfLists' : [ [1,2],[3,4] ] 
} 

(是的,我知道這是不是如何「真正」的外貌,但它應該是足夠簡單)

如果我想編寫一個查詢來檢查listOfLists列表對象是否包含[3,4]的組合,那麼我該怎麼做呢?

我可以做類似

collection.find({'listsOfLists' : {'$elemMatch' : [3,4] } }) 

回答

1
collection.find({ 'listsOfLists': [3,4] }). 

這只是對物業 「直接匹配」。 MongoDB會自動查看每個數組元素。您在這裏不需要$elemMatch

如果你要使用它,你需要一個操作符表達式,如$eq

collection.find({ 'listsOfLists': { '$elemMatch': { '$eq': [3,4] } } }). 

但是,這當然不是必需的,除非有「兩個或兩個以上」的條件實際上需要匹配數組元素。這是$elemMatch實際上的用途。

+0

所以,在一個相關的項目。我可以使用$ elemMatch來檢查列表中的第一個元素是否與查詢匹配嗎?就像{'$ elemMatch':{'$ eq':3}} –

+0

@ K.Niemczyk這實際上是[另一個問題要問](http://stackoverflow.com/questions/ask),但它是一個有一個合理的答案。如果你不能解決問題,請在這裏發佈另一個問題。 –