按日期查找没有功能

时间:2019-04-22 18:37:29

标签: javascript node.js mongodb mongodb-query

我有一个带有date属性的mongodb集合。我需要找到一些日期大于文字日期字符串的对象。我正在使用node.js本机驱动程序。我收到日期作为字符串。当我尝试此操作时,不起作用:

db.myCollection.find({ 
        'dateField': { $gte : "1974-11-18T02:00:00.000Z"  }
}).count()

这也不起作用:

db.myCollection.find({ 
        'dateField': { $gte : {$date: '1974-11-18T02:00:00.000Z'}  }
}).count()

但这可行:

db.myCollection.find({ 
        'dateField: { $gte : ISODate("1974-11-18T02:00:00.000Z")  }
}).count()  

如何在不使用Date()或ISODate()函数的情况下按日期查询mongodb?

编辑:

我无法使用函数,因为在我的nodejs应用中,我有这个对象:

let conditions = {}
conditions['dateField'] = "1974-11-18T02:00:00.000Z"

let rows = await db.collection('myCollection').aggregate([
    {$match: conditions},
    {$count: "total"}
]).toArray()

所以我无法在mongodb上将条件对象上的“函数”传递给$ match,因为这不起作用:

conditions['dateField'] = new Date("1974-11-18T02:00:00.000Z")

1 个答案:

答案 0 :(得分:0)

我通过将mongodb字段从日期类型更改为字符串来实现这一点。但是字符串必须采用ISO-8601 日期格式,例如“ 1974-11-18T02:00:00.000Z”。现在,我可以使用文字字符串中的日期查询mongodb:

db.myCollection.find({ 
    'dateField': { $gte : "1974-11-18T02:00:00.000Z"  }
}).count()

我认为这可行,因为mongodb应该理解该字符串为ISO格式,然后在日期上反序列化该字符串以进行比较