如何在MongoDB中使用与UTC不同的时区按日期范围查找对象



由于MongoDB以UTC存储日期对象,而我的Spring应用程序的默认时区为America/New_York,因此如何在America/New_York时区中按日期范围查询数据库?

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

如果我在午夜前盲目查找,则返回的对象将在午夜前4-5小时,即2020年11月19日(因为UTC午夜提前4/5小时,具体取决于月份(。

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

您可能希望在聚合管道中使用$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
}
}
])

ref:$dateFromString MongoDB文档

相关内容

  • 没有找到相关文章

最新更新