MongoDB ISODates и $match

В настоящее время у меня есть ISODate, который установлен на 7 июля. У меня есть строка 7 июля. Я пытаюсь изолировать эти конкретные события в InvoiceDate. Я пробовал это:

$match{InvoiceDate: {"$dateFromParts":{'год':год,'месяц':месяц,'день':день}}}

однако я продолжаю получать NULL для своего массива. Я не знаю, что здесь не так. Может кто-нибудь, пожалуйста, помогите мне.


person Personhere    schedule 10.08.2018    source источник


Ответы (2)


Используйте для этого библиотеку моментов, указав формат даты в передаваемой строке:

/* set to 12:00:00 am 17 July 2018 */
const start = moment('7-17-2018', 'M-DD-YYYY').startOf('day').toDate(); 

/* set to 11:59:59 pm 17 July 2018 */
const end = moment('7-17-2018', 'M-DD-YYYY').endOf('day').toDate();

collection.find({ 'invoiceDate': { '$gte': start, '$lte': end }  })
     .toArray((err, data) => console.log(data)) 

или с совокупностью

collection.aggregate([
    { '$match': {
        'invoiceDate': { '$gte': start, '$lte': end }  
    } } 
], (err, data) => console.log(data))
person chridam    schedule 10.08.2018

Вы можете фильтровать документы mongodb по определенной дате, как это.

$match([{invoiceDate:$gte:moment(date_to_check).startOf('day'),$lte:moment(date_to_check).endOf('day')}}])

Попробуй это

person user8095754    schedule 10.08.2018
comment
Я не могу заставить это работать: я вставил: $match({invoiceDate:{$gte:moment('7-17-2018').startOf('day'),$lte:moment(date_to_check). конец дня')}}) - person Personhere; 10.08.2018
comment
вам не хватает date_to_check в конце дня. самое главное, установил ли момент, как npm, я момент, чтобы использовать библиотеку моментов - person user8095754; 10.08.2018
comment
$match({invoiceDate:{$gte:moment('7-17-2018').startOf('day'),$lte:moment('7-17-2018').endOf('day')}} ) --- Только что проверил, не работает, постоянно выдает ошибку относительно круглых скобок момента. Я также установил пакет моментов. - person Personhere; 10.08.2018
comment
collection.aggregate([{ $match({invoiceDate:{$gte:moment('7-17-2018').startOf('day'),$lte:moment('7-17-2018').endOf( 'день')}}) } ]) - person Personhere; 10.08.2018