首页
学习
活动
专区
圈层
工具
发布
社区首页 >问答首页 >MongoDb搜索日期字段

问MongoDb搜索日期字段
EN

Stack Overflow用户
提问于 2018-08-31 15:59:18
回答 1查看 1.3K关注 0票数 0

我有一个ISODate格式的带有'DateAdded‘的Mongo集合

代码语言:javascript
复制
{
"_id" : 4098199,
"DateAdded" : ISODate("2018-08-31T05:06:13.150Z")
}

所以现在是1小时,然后是本地日期时间

代码语言:javascript
复制
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格式的记录

代码语言:javascript
复制
 db.getCollection('User').find({"DateAdded":{$gte: new ISODate('2018-08-31T6:00:00Z')}})

如何在MongoDB中搜索日期字段时转换协调世界时的日期?

EN

回答 1

Stack Overflow用户

回答已采纳

发布于 2018-08-31 16:26:55

首先,ISODate('2018-08-31T6:00:00Z')有一个拼写错误-它应该是06:00:00Z。如果不使用前导0,ISODate助手将返回'2018-08-31T00:00:00Z' 0am UTC,而查询实际上将返回文档。

其次,没有任何关于当地时间的内容。ISODate是协调世界时,所以ISODate("2018-08-31T05:06:13.150Z")是世界协调时5am,ISODate("2018-08-31T06:06:13.150Z")是世界协调时6am。5 < 6,所以$gte条件不满足,并且不返回文档。

最后,如果您想使用本地时间-请改用Date:

代码语言:javascript
复制
db.getCollection('User').find({"DateAdded":{$gte: new Date('2018-08-31T6:00:00')}})

将返回在UTC时间早上5点,当地时间早上6点之后创建的所有文档。请注意,末尾没有指定协调世界时时区的Z。

作为一个建议--不要搞乱当地时间。尽快将其转换为UTC,并始终使用UTC。

票数 0
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/52110996

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档