0

我对边缘情况的日期范围缺乏准确性感到困惑。我的文档的日期总是从一天的最开始开始 - 小时/分钟/秒为 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") }

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

4

1 回答 1

2

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

这应该有效:

db.days.find({dateR: {$gte: new Date(Date.UTC(2013, 9, 14))}}, {dateR: 1})
于 2013-10-14T15:46:28.760 回答