2013-03-21 164 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来得到正确的结果(在你有很多数组元素以及必须符合多个条件的情况下“起来“