使用 ISODate 转换查询
Posted
技术标签:
【中文标题】使用 ISODate 转换查询【英文标题】:Convert query with ISODate 【发布时间】:2022-01-14 11:56:30 【问题描述】:我有这个 MongoDB 查询:
db.Certificates.countDocuments(
"vaccination.somministration_date":ISODate("2021-08-04")
)
我也想在我的 java 应用程序中执行它,所以我尝试了这段代码:
Date date = new SimpleDateFormat("yyyy-MM-dd").parse("2021-08-04");
Bson query = eq("vaccination.somministration_date", date);
long count = collection.countDocuments(query);
但是我得到的结果是不同的(从 mongo 我得到 1 作为结果,而从 java 得到 0)
【问题讨论】:
【参考方案1】:MongoDB 将日期时间存储在 GMT+0 中。您在 javascript 中的第一个查询是调用ISODate()
,它总是产生一个带有 GMT+0 ("Z"ulu) 时间偏移的日期时间。
您的 Java 执行环境在调用 parse()
时可能会考虑本地时间偏移并创建稍微不同的日期时间。
【讨论】:
以上是关于使用 ISODate 转换查询的主要内容,如果未能解决你的问题,请参考以下文章
Mongo:如何将所有使用 long timeStamp 的条目转换为 ISODate?