刚开始使用MongoDB - 是否可以在一个语句中使用$or
和$and
。
所以atm,我有以下搜索声明:
find(
{$or: [{tags : {$in: ["test", "output"]}}, {$text:{$search: "test" }} ]},
{_id:0, publicID: 1, story:1}
)
但是,我想检查2个字段verified
和flagged
等于false。
所以我看到我做不到:
find(
{$or: [{tags : {$in: ["test", "output"]}}, {$text:{$search: "test" }} ]},
{$and: [{verified : false}, {$flagged : false } ] },
{_id:0, publicID: 1, story:1}
)
这使我认为我需要使用aggregate
但不确定如何在一个声明中执行$or
和$and
。
任何帮助表示感谢。
感谢。
答案 0 :(得分:3)
我相信这已经得到了回答,但您可以在MongoDB中组合逻辑查询运算符,包括$和$或。
在您的示例中,您可以这样做:
find({
$and : [
{ $or : [
{ tags : { $in: ["test", "output"] } },
{ $text : { $search : "test" } }
]},
{ verified : false },
{ flagged : false }
]},
{ _id:0, publicID : 1, story : 1 }
);