2013-03-21 162 views
0

我對MongoDB相當陌生,我想我誤解了$ elemMatch的工作原理。我正在運行以下兩個查詢,我期望返回相同的結果集。第一個返回我期望的內容,所有包含stats.o元素的文檔都等於1。第二個查詢不返回任何文檔。有誰知道爲什麼我會得到第一個查詢的結果,但不是第二個?數據庫正在MongoLab上運行,該MongoLab正在運行MongoDB 2.2。

{ 
    "stats.o":1 
} 


{ 
    "stats": { 
     "$elemMatch": { 
      "o": 1 
     } 
    } 
} 
+0

你可以顯示文檔的結構嗎? – user20140268 2013-03-21 18:45:28

+0

是統計數組還是文檔?$ elemMatch只適用於數組... – 2013-03-22 02:44:47

回答

0

你很可能看到的$ elemMatch僅是適用於嵌入式的文件,而不是簡單的嵌入式文件陣列的影響。

有延長$ elemMatch的功能跟蹤爲https://jira.mongodb.org/browse/SERVER-6050

所以,如果你的文檔是一個請求:

{ stat : { o : 1 } }

你不能使用$ elemMatch(但你並不真的需要至)。

但如果它是

{ stat : [ { o : 1 } ] }

,那麼你可以和實際上可能需要使用$ elemMatch來得到正確的結果(在你有很多數組元素以及必須符合多個條件的情況下「起來「