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

JWa*_*lly 7 mongodb

我有以下文件:

{_id : 1, numbers : [-1000, 1000]}
{_id : 2, numbers : [5]}
Run Code Online (Sandbox Code Playgroud)

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

db.foo.find({numbers : $and : [{$gt : -10},{$lt : 10}]})
Run Code Online (Sandbox Code Playgroud)

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

Lou*_*isa 8

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

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

   db.foo.find( { numbers : { $elemMatch : { $gt : -10 , $lt : 10 } } } );
Run Code Online (Sandbox Code Playgroud)

这将只返回_id:2文档.