我的集合中有以下字段:
"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
指定一个值时,这将起作用,因为我正在使用 $in
- Logical Query Operator但是,当我没有为 intent
指定值时,它无法返回任何文档,所以我要问的是,有没有办法可以说 intent
是否有一个值然后对其进行过滤,否则如果不存在则不应用过滤器?
最佳答案
为什么不动态设置查询对象?
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。
关于javascript - 如果值存在则应用过滤器,否则忽略 - Mongoose ,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/44129334/