如何执行使用 AND 和 OR 的条件 Mongoose 查询?

dyl*_*zed 3 javascript database mongoose mongodb node.js

我想用猫鼬做一个复杂的和/或查询。这是一些伪代码,显示了我正在尝试做的事情:

Find persons where (
  (date_begin == null || date_begin <= today)
  && (date_end == null || date_end >= tomorrow)
)
Run Code Online (Sandbox Code Playgroud)

这是我对真正的 Mongoose 代码的失败尝试:

  query = Person
    .find()
    .where('date_begin').equals(null).or.where('date_begin').lte(today)
    .where('date_end').equals(null).or.where('date_end').gte(tomorrow)
Run Code Online (Sandbox Code Playgroud)

任何建议将不胜感激!(仅供参考,今天和明天都很好,这是我要问的猫鼬语法。)

Abd*_*eed 7

迪兰化,

您可以像这样直接使用 mongodb逻辑查询运算符来执行以下操作

  Person.find({
      $and: [
          { $or: [{date_begin: null}, {date_begin: {$lte : today}}] },
          { $or: [{date_end: null}, {date_end: {$gte : tommorow}}] }
      ]
  }, function (err, results) {
      ...
  }
Run Code Online (Sandbox Code Playgroud)