$或mongodb中的查询

时间:2018-08-27 06:13:37

标签: mongodb mongoose

我需要查找字段create_date,但是如果未定义create_date,则查找字段create_time:

Sources_Timings.find({
    create_date: {
        $or: [
            {
                $gte: req.body.date.starting,
                $lte: req.body.date.ending
            },
            {
                $exists: false
            }
        ]
    },
    create_time: {
        $or: [
            {
                $gte: 0,
                $lt: 86400000
            },
            {
                $exists: false
            }
        ]
    }
},
function(err, timings) {
  ...
})

我的代码不起作用。

1 个答案:

答案 0 :(得分:2)

$or是顶级运算符,它对两个或多个表达式的数组执行操作,并选择满足至少一个表达式的文档。

所以您查询的应该是这样的

Sources_Timings.find({
  "$or": [
    {
      "create_date": {
        "$gte": req.body.date.starting,
        "$lte": req.body.date.ending
      }
    },
    {
      "create_time": {
        "$gte": 0,
        "$lt": 86400000
      }
    }
  ]
})