Mongo日期查询在边缘情况下失败

时间:2013-10-14 14:59:44

标签: mongodb

我对边缘情况下日期范围缺乏准确性感到困惑。我的文档的日期始终从一天的开始 - 小时/分钟/秒00:00:00 - 并且无法使用$ gte运算符查询它们。

> db.days.find({dateR : {$gte:new Date(2013,9,14)}},{dateR:1})
null

> db.days.find({dateR : {$gte:new Date(2013,9,13)}},{dateR:1})
{ "_id" : ObjectId("525b79b5c598c6f439000600"), "dateR" : ISODate("2013-10-14T00:00:00Z") }

为什么第二个查询中找到的文档不会出现在第一个查询中?

1 个答案:

答案 0 :(得分:2)

这是因为new Date(2013,9,14)根据本地时区创建日期,但MongoDB日期始终为UTC。

这应该有效:

 
db.days.find({dateR: {$gte: new Date(Date.UTC(2013, 9, 14))}}, {dateR: 1})