有没有办法从 MongoDB 中的 INT 创建 ObjectID?

Is there a way to create an ObjectID from INT in MongoDB?

这个问题最初是在 dba.stackexchange.com 中提出的。我正在尝试将用户 ID 从 MySQL 迁移到 MongoDB,并且我想从 int 创建 objectID。有没有办法像 ObjectID 的随机部分那样将 INT 存储在 ObjectID 部分中?然后将其转换回从 ObjectID 到 int。

好的,有一个简单的方法:

import bson

def object_id_from_int(n):
    s = str(n)
    s = '0' * (24 - len(s)) + s
    return bson.ObjectId(s)

def int_from_object_id(obj):
    return int(str(obj))

n = 12345
obj = object_id_from_int(n)
n = int_from_object_id(obj)
print(repr(obj))  # ObjectId('000000000000000000012345')
print(n)  # 12345