Mysql

关注公众号 jb51net

关闭
首页 > 数据库 > Mysql > MongoDB日期查询

MongoDB日期查询操作图文详解

作者:Major_xx

MongoDB中按日期查询是一种常见的查询操作,而按日期查询也是开发人员在MongoDB工作中最常遇到的查询任务之一,这篇文章主要给大家介绍了关于MongoDB日期查询操作的相关资料,需要的朋友可以参考下

MongoDB日期查询详解(数据库默认是UTC标准时间)

一、MongoDB日期查询格式

MongoDB中日期查询格式采用ISODate()函数加上日期字符串的形式,如下所示:

db.collection.find({create_time:{$gte:ISODate("2021-01-01T00:00:00.000Z")}})

其中,'gte’表示大于等于,'lte’表示小于等于,'gt’表示大于,'lt’表示小于,'ISODate()'包含了日期数据的时间戳,需要放置在双引号中。

二、MongoDB查询日期类型数据

在MongoDB中,日期类型数据存储方式为ISODate格式,可以通过以下方式进行数据插入:

db.collection.insert({
  create_time: new Date()
})

通过new Date()生成当前时间并且存入create_time字段中,查询数据时可以根据需要进行日期查询。

三、MongoDB查询语句

MongoDB查询语句使用find()函数进行操作,可以根据需要进行条件查询。

db.collection.find({create_time: {$gte: ISODate("2020-01-01T00:00:00.000Z")}})

在上面的例子中,查询了所有create_time字段大于等于"2020-01-01T00:00:00.000Z"的数据。

四、MongoDB中日期类型

MongoDB中日期类型包括ISODate和Timestamp两种类型,其中ISODate类型的日期精确到毫秒,可以进行具体的时间计算和比较;而Timestamp类型只精确到秒级别,只能做到粗略的时间计算和比较。

五、MongoDB查询过程图

查询过程图如下:

  collection.find(query).skip(offset).limit(limit)
        |
        v
  query = {'create_time': {'$gte': ISODate('2021-01-01T00:00:00.000Z')}}
        |
        v
  MongoDB查询数据过程,取出满足条件的数据
        |
        v
  对数据进行分页处理,返回需要的数据

六、MongoDB时间查询

针对特定日期进行查询,可以使用以下方法:

db.collection.find({
  create_time: {$gte: ISODate("2021-01-01T00:00:00.000Z"), $lte: ISODate("2021-01-31T23:59:59.999Z")}
})

在上面的例子中,查询了所有create_time字段在"2021-01-01T00:00:00.000Z""2021-01-31T23:59:59.999Z"之间的数据。

七、MongoDB查询效率

MongoDB查询效率受到多个因素的影响,包括数据量、查询条件、索引设置等等。

最佳实践包括:

八、MongoDB count查询

MongoDB count查询可以使用countDocuments()函数和estimatedDocumentCount()函数进行操作,其中countDocuments()对大型数据集有更好的性能表现,而estimatedDocumentCount()则可以获取更快的响应时间。

db.collection.countDocuments({create_time:{$gte:ISODate("2021-01-01T00:00:00.000Z")}})
db.collection.estimatedDocumentCount()

九、补充

例如查找东八区创建日期大于2023-12-06T11:00:00.000,相当于UTC查找创建日期大于2023-12-06T03:00:00.000Z

db.collection.find({create_time:{$gte:ISODate("2023-12-06T03:00:00.000Z")}})

我们也可以使用东八区的格式来查,只不过不需要减8小时,虽然配置的是UTC但是会自动将东八区转为UTC时间来查。

db.book.find({updateTime:{$gte:ISODate("2023-12-06T11:00:00.000+08:00")}})

db.book.find({updateTime:{$gte:ISODate("2023-12-06T11:00:00.000+08:00")}})

我们也可以使用UTC的格式来查,只不过需要减8小时,虽然配置的是东八区但是会自动将UTC转为东八区时间来查。

db.collection.find({create_time:{$gte:ISODate("2023-12-06T03:00:00.000Z")}})

结论:

无论数据库的配置是UTC还是LocalTinezone,使用何种语句本质相同就是代表查询的是东八区时间。

db.collection.find({create_time:{$gte:ISODate("2023-12-06T03:00:00.000Z")}})
db.book.find({updateTime:{$gte:ISODate("2023-12-06T11:00:00.000+08:00")}})

总结 

到此这篇关于MongoDB日期查询操作的文章就介绍到这了,更多相关MongoDB日期查询内容请搜索脚本之家以前的文章或继续浏览下面的相关文章希望大家以后多多支持脚本之家!

您可能感兴趣的文章:
阅读全文