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