具有日期的猫鼬或操作员

Yag*_*giz 6 mongoose mongodb node.js

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

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

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

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

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

谢谢.

Vol*_*kyi 11

据我所知,你不能嵌套$或在某些特定领域内.该$或运营商需要表达的阵列.

请尝试以下查询:

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