使用背景:
在不覆盖_id的情况下,mongoDB会根据时间生成对应的bsonId。可以根据bsonId来知道数据的入库时间。下面是实现bsonId与时间戳的相互转换
import datetime import time from bson import ObjectId def timestamp_from_objectid(objectId): """ bson_objectId 转化为 时间戳 :param objectid: bson_objectId :return: 时间戳(秒级) """ result = 0 try: result = time.mktime(objectId.generation_time.timetuple()) except: pass return result def general_obj_from_time(timestamp=None, time_delta=None): """ 时间戳 转化为 bson_objectId :param from_datetime: 时间元组 :param time_delta: 是datetime.timedelta类型,可以进行时间的加减运算 :return: """ from_datetime = datetime.datetime.fromtimestamp(timestamp) if from_datetime is None or not isinstance(from_datetime, datetime.datetime): from_datetime = datetime.datetime.now() if time_delta: from_datetime = from_datetime + time_delta return ObjectId.from_datetime(from_datetime)
# 使用案例 if __name__ == '__main__': print(general_obj_from_time(1624809600)) print(timestamp_from_objectid(ObjectId("60d911000000000000000000")))