首页
学习
活动
专区
圈层
工具
发布
社区首页 >问答首页 >如何使用不同于协调世界时的时区在MongoDB中按日期范围查找对象?

如何使用不同于协调世界时的时区在MongoDB中按日期范围查找对象?
EN

Stack Overflow用户
提问于 2020-12-03 12:44:35
回答 1查看 53关注 0票数 0

由于MongoDB将date对象存储在UTC中,并且我的Spring应用程序的默认时区为America/New_York,那么如何在America/New_York时区中按日期范围查询数据库?

例如,集合中的每个文档都有一个UTC格式的createdDate,我想要查询在America/New_York时区中的午夜11/20/2020之后创建的文档,如何在我的Spring Data MongoDB应用程序中做到这一点?

如果我盲目地在午夜之前找到,那么返回的对象将在午夜之前4-5小时,这意味着11/19/2020 (因为UTC午夜根据月份提前4/5小时)。

我的Spring应用程序将日期时间存储在一个Java LocalDateTime对象中。数据库中的日期时间如下所示:2020-10-28T03:40:49.132+00:00

EN

回答 1

Stack Overflow用户

发布于 2020-12-03 15:25:09

您可能希望在聚合管道中使用$dateFromString来投影标志,并使用标志进行筛选:

代码语言:javascript
复制
db.getCollection(<collection name>).aggregate([
    {
        $addFields : {
            largerThan : {
                $gte : [
                    "$createdDate",
                    { 
                        $dateFromString: {
                            dateString: "2020-11-20T00:00:00.000",
                            timezone: "America/New_York"
                        } 
                    }
                ]
            }
        }
    },
    {
        $match : {
            largerThan : true
        }
    }
])

参考:$dateFromString MongoDB documentation

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

https://stackoverflow.com/questions/65120054

复制
相关文章

相似问题

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