我正在尝试构建一个Mongo查询,该查询可以获得满足多个$ AND条件以及一个或多个$ OR条件的所有文档。我的方法如下。
$ AND条件似乎按预期工作,但是当我添加$ OR时,结果不会改变。任何帮助表示赞赏。
Collection.find({
$and:[
{lat: { $ne:""}},
{lon: { $ne:""}},
{type : "foo"},
{keywords:{ $regex : "bar", $options:"i" }},
{ $or:[
{isOpen : "True"},
{isOpen : "False"},
{price : { $gte: 0}},
]
},
]
}
)
答案 0 :(得分:1)
只需创建一个查询,您只需指定逗号分隔的表达式列表,因为它隐式为您执行AND操作。然后,您可以在列表中包含或查询,如下所示:
var query = {
lat: { $ne: ""},
lon: { $ne:"" },
type: "foo",
keywords: { $regex : "bar", $options:"i" },
$or: [
{ isOpen: "True"},
{ isOpen: "False"},
{ price: { $gte: 0}},
]
};
Collection.find(query);
您可以参考 docs :
MongoDB在指定逗号时提供隐式AND操作 分隔的表达式列表。使用显式AND与$和 当相同的字段或操作符必须时,操作符是必需的 在多个表达式中指定。