我有一个带有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")
答案 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格式,然后在日期上反序列化该字符串以进行比较