javascript - 如果值存在则应用过滤器,否则忽略 - Mongoose

标签 javascript mongodb mongoose

我的集合中有以下字段:

"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/

相关文章:

javascript - 动态更改 SVG 元素后对其进行动画处理

javascript - 与 npm install 集成

javascript - 用于获取数据的自定义 react Hook 在第二次点击时不会提供数据

javascript - InDesign CC 2019 | InDesign CC 2019使用 JSX 获取页面尺寸(pageWidth 和 pageHeight),而不是文档尺寸?

mongodb - GeoNear Mongoose 和 2d 索引

javascript - Mongoose 模式内的相同模式

javascript - 使用 MongoDB 和 Nodejs 插入和查询日期

node.js - 对 API 的 Angular HTTPS 和 HTTP 请求

当我尝试从 Mongoose 访问 MongoDB 数据库时,Node.js Express 应用程序卡住

Mongodb唯一稀疏索引