8

我有以下文件:

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

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

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

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

4

1 回答 1

8

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

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

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

这只会返回 _id : 2 文档。

于 2012-08-27T20:24:43.390 回答