我有以下文件:
{_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
答案 0 :(得分:8)
您可以使用$ elemMatch来检查数组中的元素是否与指定的匹配表达式匹配。
在这种情况下,您可以使用它来获取其数字数组的元素介于-10和10之间的文档:
db.foo.find( { numbers : { $elemMatch : { $gt : -10 , $lt : 10 } } } );
这将只返回_id:2文档。