我的收藏中有以下字段:
"intent" : [
"Find a job",
"Advertise a job"
],
我尝试做的事情基本上是在该字段上过滤结果。
因此,如果最终用户传入
[
"Find a job",
]
然后我将返回所有具有意图Find a job
的文档,这是我目前的查询:
var _intent = req.body.intent;
Reason.find({ intent: { $in: _intent }}, function (err, reason) {
if (err) {
res.send(err);
}
res.json(reason);
});
现在,当我使用intent
- Logical Query Operator指定$in
的值时,这是有效的,但是当我没有为intent
指定值时它没有返回任何文件,所以我要问的是,如果intent
有一个值然后对其进行过滤,我可以说,否则,如果它没有那么不适用过滤器?
答案 0 :(得分:2)
为什么不动态设置查询对象?
var query = {};
if ( req.body.hasOwnProperty('intent') )
query.intent = { "$in": req.body.intent };
Reason.find(query, function(err, reason) {
});
甚至
if ( req.body.intent.length > 0 )
哪种逻辑适合的情况。它毕竟只是JavaScript。