首页 > 解决方案 > Mongodb ISODates 和 $match

问题描述

目前我有一个设置为 7 月 7 日的 ISODate。我有一个字符串是 7 月 7 日。我正在尝试隔离 InvoiceDate 中的那些特定事件。我试过这个:

$match{InvoiceDate: {"$dateFromParts":{'year':year,'month':month,'day':day}}}

但是,我的数组一直为 NULL。我不知道这里有什么问题。有人可以帮助我。

标签: node.jsmongodbisodate

解决方案


为此使用矩库,在您传递的字符串中指定日期格式:

/* 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))

推荐阅读