MongoDB之ObjectId的时间范围查询

本文介绍了如何在MongoDB中通过指定时间进行ObjectId的过滤查询。内容包括:1. 获取指定时间的时间戳;2. 将时间戳转换为16进制字符;3. 合成完整的ObjectId字符串。注意MongoDB使用UTC时间,可能存在时区差异导致查询结果有8小时的偏差。
摘要由CSDN通过智能技术生成

Mongodb的ObjectId是如何生成的?

   mongodb对于未定义_id的数据,会自动生成ObjectId;它的规则是有16进制时间戳(4个字节,即8个字符)+5字节的随机值+3字节的计数器(以随机值开始)组成;详情可以见官网对于ObjectId的描述及其操作:官网对于ObjectId的描述及其操作

本节主要解决问题是如何通过指定时间来对于ObjectId进行过滤数据:

    1.获取指定时间的时间戳(精确到秒)

    2.把10位的时间戳转成16进制字符,得到4个字节

    3.对4个字节(时间戳)后追加"0000000000000000"(8个字节)

那么就按照上述步骤进行代码展示(以python为例):

def query():
    client = mongodbInit.MongodbData("LOCAL_MONGODB"); #获取mongo连接
    t = time.strptime("2019-07-31 00:00:00", "%Y-%m-%d %H:%M:%S" );
    k = time.mktime(t);
    stamp10 = int(k)  # 10位的时间戳
  • 0
    点赞
  • 1
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值