Монго запрос, если поле не существует.Если существует, должен быть в пределах диапазона - PullRequest
2 голосов
/ 30 апреля 2019

У меня есть коллекция с полем endDateTime:

Если endDateTime равно null, операция еще не завершена. Если он закончился, endDateTime содержит метку времени (Javascript Date.now())

Как я могу запросить записи, которые еще не завершены (endDateTime равно null) или закончились за последние 24 часа:

   let endDateTime = Date.now();
   let startDateTime = endDateTime - 24 * 60 * 60 * 1000;

   query.endDateTime = {
             $or: [
                   null,
                   { $and: [{ $gte: startDateTime }, { $lte: endDateTime }] }
                  ]
    };

Мой запрос возвращает регистры до 24 hours ago. Как это решить?

1 Ответ

2 голосов
/ 30 апреля 2019

Вы можете объединить свои критерии с $or:

db.col.find({
    $or: [
        { endDateTime: null },
        { endDateTime: { $gt: Date.now() - 24 * 60 * 60 * 1000 } } 
    ]
})

или если у вас нет ключа endDateTime в некоторых ваших документах, вам нужен оператор $ существующие :

db.col.find({
    $or: [
        { endDateTime: { $exists: false } },
        { endDateTime: { $gt: Date.now() - 24 * 60 * 60 * 1000 } } 
    ]
})
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...