В настоящее время я пытаюсь исключить конкретную дату из моей коллекции mongodb посредством агрегации. Однако по какой-то причине я не могу этого сделать.
Вот моя совокупная функция:
collection.aggregate([
{$match:{$ne:[moment(value, 'M-DD-YYYY').startOf('day').toDate(), moment(value, 'M-DD-YYYY').endOf('day').toDate() ]}}])
значение - это дата: '7-17-2018'
Вам необходимо изменить логику операторы сравнения в запросе диапазона дат и использовать логический оператор $or
для запроса дополнения диапазона дат, т.е.
const momentObj = moment(value, 'M-DD-YYYY');
const start = momentObj.startOf('day').toDate();
const end = momentObj.endOf('day').toDate();
collection.aggregate([
{ '$match': {
'$or': [
{ 'invoiceDate': { '$lt': start } },
{ 'invoiceDate': { '$gt': end } }
]
} }
], (err, data) => console.info(data))
Я думаю, что это должен быть
$or
, а не$and
...?!