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



我对边缘情况周围的日期范围缺乏准确性感到困惑。我有一些文档的日期总是从一天的开始开始 - 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") }

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

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

这应该有效:

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

最新更新