MongoDB:使用多个条件在Array中查找值

时间:2012-08-27 20:06:59

标签: mongodb

我有以下文件:

{_id : 1, numbers : [-1000, 1000]}
{_id : 2, numbers : [5]}

我正在尝试获取一个查询,该查询将查找数字数组中值为-10到10之间的文档(在本例中为_id:2)。但是,当我尝试以下内容时:

db.foo.find({numbers : $and : [{$gt : -10},{$lt : 10}]})

它返回所有文件。这可能没有map-reduce吗?谢谢,-JWW

1 个答案:

答案 0 :(得分:8)

您可以使用$ elemMatch来检查数组中的元素是否与指定的匹配表达式匹配。

在这种情况下,您可以使用它来获取其数字数组的元素介于-10和10之间的文档:

   db.foo.find( { numbers : { $elemMatch : { $gt : -10 , $lt : 10 } } } );

这将只返回_id:2文档。