由于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
发布于 2020-12-03 15:25:09
您可能希望在聚合管道中使用$dateFromString来投影标志,并使用标志进行筛选:
db.getCollection(<collection name>).aggregate([
{
$addFields : {
largerThan : {
$gte : [
"$createdDate",
{
$dateFromString: {
dateString: "2020-11-20T00:00:00.000",
timezone: "America/New_York"
}
}
]
}
}
},
{
$match : {
largerThan : true
}
}
])https://stackoverflow.com/questions/65120054
复制相似问题