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位的时间戳

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

1706

被折叠的 条评论
为什么被折叠?



