我对边缘情况下日期范围缺乏准确性感到困惑。我的文档的日期始终从一天的开始 - 小时/分钟/秒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") }
为什么第二个查询中找到的文档不会出现在第一个查询中?
答案 0 :(得分:2)
这是因为new Date(2013,9,14)
根据本地时区创建日期,但MongoDB日期始终为UTC。
这应该有效:
db.days.find({dateR: {$gte: new Date(Date.UTC(2013, 9, 14))}}, {dateR: 1})