Javascript 按日期查找,不带函数
我有一个带有日期属性的mongodb集合。我需要找到一些日期大于文本日期字符串的对象。我正在使用node.js本机驱动程序。我收到的日期是字符串。当我尝试此操作时,不起作用:Javascript 按日期查找,不带函数,javascript,node.js,mongodb,mongodb-query,Javascript,Node.js,Mongodb,Mongodb Query,我有一个带有日期属性的mongodb集合。我需要找到一些日期大于文本日期字符串的对象。我正在使用node.js本机驱动程序。我收到的日期是字符串。当我尝试此操作时,不起作用: db.myCollection.find({ 'dateField': { $gte : "1974-11-18T02:00:00.000Z" } }).count() conditions['dateField'] = new Date("1974-11-18T02:00:00.000Z") 这也
db.myCollection.find({
'dateField': { $gte : "1974-11-18T02:00:00.000Z" }
}).count()
conditions['dateField'] = new Date("1974-11-18T02:00:00.000Z")
这也不行:
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()
因此,我无法将conditions对象上的“函数”传递给mongodb上的$match,因为这不起作用:
db.myCollection.find({
'dateField': { $gte : "1974-11-18T02:00:00.000Z" }
}).count()
conditions['dateField'] = new Date("1974-11-18T02:00:00.000Z")
我通过将mongodb字段从日期类型更改为字符串来获得它。但是字符串需要采用ISO-8601日期格式,如“1974-11-18T02:00:00.000Z”。现在我可以使用文本字符串中的日期查询mongodb:
db.myCollection.find({
'dateField': { $gte : "1974-11-18T02:00:00.000Z" }
}).count()
我认为这是可行的,因为mongodb应该理解字符串是ISO格式的,然后在date对字符串进行反序列化以进行比较您是否有任何不使用
date()
函数的具体原因?由于您试图查找仅大于提供日期的值,因此必须将字符串转换为日期以进行比较请参见我的编辑我不清楚为什么不能使用条件['dateField']=new date(“1974-11-18T02:00:00.000Z”)
我可以这样使用。这对我来说更困难,因为我需要深入搜索我的对象(我的查询是daynamic,所以我需要找到所有日期,然后进行“替换”)。我从我的客户机应用程序(我在那里构建查询)接收到一个JSON,而JSON不接受函数。所以我在寻找一种方法来比较mongo上的日期和文本字符串中的日期