具有日期的猫鼬或操作员

时间:2016-01-12 21:18:27

标签: node.js mongodb mongoose

我正在尝试编写一个类似的查询:

var query = {
    userId: req.params.userId,
    isActive: true,
    'interval.start': {
        $lte: now
    },
    'interval.end': {
        $or: [
            { $gte: now },
            { $exists: false },
            { $eq: null } 
        ]
    }
};

我想要实现的是我想找到适合这些条件的列:

  • interval.end日期应该大于现在。
  • OR结束日期不应存在
  • 或者它应该存在为null。

我收到了:Can't use $or with Date.错误。

谢谢。

1 个答案:

答案 0 :(得分:7)

据我所知,你不能嵌套$或在特定领域内。 $or运算符采用一系列表达式。

尝试以下查询:

var query = {
    userId: req.params.userId,
    isActive: true,
    'interval.start': {
        $lte: now
    },
    $or: [
        {'interval.end': {$gte: now} },
        {'interval.end': {$exists: false} },
        {'interval.end': null } 
    ]
};