按时间search – MongoDB / NodeJS
我有一个文件,有以下时间:
"time" : ISODate("2013-12-31T03:00:00Z")
我目前正在尝试使用带有Node.JS驱动程序的MongoDB查询来查找此文档。
var time = new Date(2013,11,31,3,0,0,0);
这个date打印出来如下使用console.log()
Tue Dec 31 2013 03:00:00 GMT-0500 (EST)
当我尝试使用标准的collection.findOne(我肯定查询本身不是问题,而不是时间戳)find这个文档时,它找不到文档。 Mongo shell显示文件存在。 我如何格式化我的时间不正确?
编辑:我也会在查询中添加。
collection.findOne( { "time" : time}, {"_id" : 0}, function(err, items){ if (err){ throw err; } console.log(err); console.log(items); res.send(items); });
你有一个时区问题。 您要查找的时间戳是2013-12-31T03:00:00Z
,结尾的Z
表示“零时区偏移量”。 但是您使用的new Date
版本:
var time = new Date(2013,11,31,3,0,0,0);
解释当前时区中的所有这些值。 如果我们看看你的console.log
输出:
Tue Dec 31 2013 03:00:00 GMT-0500 (EST)
我们可以看到你在EST时区,而你的time
是在EST的03:00
而不是UTC的03:00
。
可能最简单的做法是在创buildDate
实例之前使用Date.UTC
将组件转换为UTC:
var time = new Date(Date.UTC(2013,11,31,3,0,0,0));
现在你应该有2013-12-31T03:00:00Z
在你的time
和你的查询应该更好地工作。