MongoDb搜索日期字段

MongoDb搜索日期字段,mongodb,mongodb-query,Mongodb,Mongodb Query,我有一个Mongo集合,带有ISODate格式的“DateAdded” { "_id" : 4098199, "DateAdded" : ISODate("2018-08-31T05:06:13.150Z") } 所以它比当地日期时间晚1小时 LocalDatetime is 2018-08-31 06:06:13 +01:00 UTC is 2018-08-31T05:06:13.150Z 当我尝试获取2018-08-31 06:00:00之后添加的记录时,使用以下查询,我无法获取UTC中

我有一个Mongo集合,带有ISODate格式的“DateAdded”

{
"_id" : 4098199,
"DateAdded" : ISODate("2018-08-31T05:06:13.150Z")
}
所以它比当地日期时间晚1小时

LocalDatetime is 2018-08-31 06:06:13 +01:00
UTC is 2018-08-31T05:06:13.150Z
当我尝试获取2018-08-31 06:00:00之后添加的记录时,使用以下查询,我无法获取UTC中的记录

 db.getCollection('User').find({"DateAdded":{$gte: new ISODate('2018-08-31T6:00:00Z')}})
在MongoDB中搜索日期字段时如何转换UTC日期?

首先
ISODate('2018-08-31T6:00:00Z')
有一个输入错误-应该是
06:00:00Z
。不带前导的
0
ISODate帮助程序返回
'2018-08-31T00:00:00Z'
0am UTC,查询实际返回文档

第二,没有关于当地时间的内容。ISODate是UTC的,所以
ISODate(“2018-08-31T05:06:13.150Z”)
是UTC早上5点,而
ISODate(“2018-08-31T06:06:13.150Z”)
是UTC早上6点
5<6
,因此
$gte
条件不满足,文档不会返回

最后,如果要使用本地时间,请使用
Date

db.getCollection('User').find({"DateAdded":{$gte: new Date('2018-08-31T6:00:00')}})
将返回UTC上午5点、当地时间上午6点之后创建的所有文档。注意,末尾没有指定UTC时区的
Z

作为建议,不要把当地时间搞砸了。尽快将其转换为UTC,并始终使用UTC。

nice!新日期()工作正常,我在新日期()中使用了“Z”