当前位置: 首页 > 知识库问答 >
问题:

MongoDb搜索日期字段

郗鹏
2023-03-14

我有一个ISODate格式的“DateAdd”Mongo集合

{
"_id" : 4098199,
"DateAdded" : ISODate("2018-08-31T05:06:13.150Z")
}

所以现在是当地时间1小时后

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中的记录

 db.getCollection('User').find({"DateAdded":{$gte: new ISODate('2018-08-31T6:00:00Z')}})

在MongoDB中搜索日期字段时,如何转换UTC日期?

共有1个答案

广绪
2023-03-14

首先,ISODate('2018-08-31T6:00:00Z')有一个输入错误-应该是06:00:00Z。如果不使用前导符,ISODate帮助程序将返回UTC时间2018-08-31T00:00:00Z,查询将实际返回文档。

其次,没有关于本地时间的内容。ISODate以UTC为单位,因此ISODate("2018-08-31T05:06:13.150Z")为UTC上午5点,ISODate("2018-08-31T06:06:13.150Z")为UTC上午6点。5

最后,如果要使用当地时间,请使用日期:

db.getCollection('User').find({"DateAdded":{$gte: new Date('2018-08-31T6:00:00')}})

将返回在UTC时间上午5点、当地时间上午6点之后创建的所有文档。注意,末尾没有Z,它指定了UTC时区。

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

 类似资料:
  • 问题内容: 我正在尝试使用查询搜索出生日期 而spring数据mongodb生成以下查询: MongoTemplate:使用查询查找: 字段:类的空值:类com.temp.model.User集合中的用户:user 但是我没有得到任何结果。 我在mongodb中的dob字段: 如何搜索 ISODate格式的 dob ? 问题答案: 这段代码可以很好地满足您的需求: 我的测试是使用以下代码,它可以正

  • 我正在尝试按日期使用过滤器,如下所示。 但与使用ISO格式“2015-05-16T07:55:23.257Z”不同,spring数据mongodb生成以下查询

  • UTCDateTime的var_dump显示有效值: 对象(MongoDB\bson\utcdatetime)#477(1){[“毫秒”]=> 字符串(10)“1515954053”} 预期返回的文档示例: UPDATE:删除发送到UTCDateTime对象的变量,如下所示: 作品(如上面所示,我在将来添加了一个记录)。问题是当我发送变量来指定我需要的时间戳时。

  • 我在使用Java搜索MongoDB中的ISODate字段时遇到麻烦。我想找到精确匹配的日期。 下面是我如何查询第一个集合并获取ISODate字段“Timestamp”。一旦我得到这个日期,我想搜索另一个具有相同“Timestamp”值的集合。 。。。 我正在格式化ISODate,因为它以我想要搜索的不同格式返回我的日期。因此,我将其转换为这种模式“yyyy-MM-dd HH: mm: ss” 我找

  • 我尝试创建一个查询,显示入住和退房日期之间的可用酒店。此外,当我为特定房间预订时,我将他们的预订列设置为1。这意味着,在现实生活中,当结账日期到来时,触发函数将该预订列设置成0。 如果酒店的所有房间都已预订(预订=1),并且这些房间的签入-退房日期是特定日期(签入-退房输入),则不要将该酒店放在列表中。我的查询不会显示我想要的结果。 查询:输入:国家(状态)、签入和签出。 当我运行查询时,它总是显

  • 我使用Mongodb和我的数据库模式,如下所示: 我要找到所有的记录,名字+名字喜欢‘瓦希德kh’。在SQL中,这将是: 从firstName+lastName类似“%Vahid KH%”的表中选择*