我们想使用“超指定”find()查询来过滤MongoDB集合。例如:我们要过滤的集合collection A
具有包含一组属性需求的文档。示例是文档a
,其包含要求{req: age:{min:20,max:30}}
和b
,其包含要求{req: gender:male}
。如何使用谓词来最好地过滤MongoDB集合
我们也有文件,d
,从collection D
包含以下属性:d = {age:21, gender: male}
。
在这种情况下,无论是a
和b
应在一组文档d
可享有,为d
满足了这两个要求。
但是,如果我们包括所有在find
查询d
的属性,我们得到db.A.find({d.age > req.age.min, d.age < req.age.max, d.gender: req.gender})
,这将排除我们的结果都a
和b
。
什么是选择所有的文件,因为d
可含有大于文件A指定要求更多的属性,最好的方式A
是d
满足了要求,并在A
的要求和D
属性不是固定的?我们希望避免在所有A.req
文档中指定D
中的所有可能属性,因为我们希望我们的要求尽可能灵活。