将 ObjectId 插入 mongodb
Insert ObjectId into mongodb
我正在开发一个 mongo 数据库,出于某种原因,该数据库将用户 ID 存储为 ObjectId
。
为了测试一些功能,我希望能够填充一个测试数据库——例如,如下:
import mongomock
from bson import ObjectId
client = mongomock.MongoClient("mongodb://localhost:27017/test-database")
database = client.get_default_database()
database.test_collection.insert({'_id': ObjectId('my_user_id'), 'value': 'my_value'})
但是,运行这个returns
InvalidId: 'my_user_id' is not a valid ObjectId, it must be a 12-byte
input or a 24-character hex string
如何正确地将 ObjectId 对象插入到我的测试数据库中,以便我可以使用
测试查询它
database.test_collection.find_one({'user': ObjectId('my_user_id')})
(查询真实数据库时正常)?
如 InvalidId 消息所述,您需要使用 12 字节 'binary' 输入或 24 字符的十六进制字符串。
因此,如果您想使用 'my_user_id' 之类的东西,则需要使用二进制或十六进制表示,并且缺少两个字符,以 12 字节或 24 十六进制表示。
例如,如果您的用户 ID 是 'my_user_id00',那么您可以使用以下任何一个:
database.test_collection.find_one({'user': ObjectId(b'my_user_id00')})
database.test_collection.find_one({'user': ObjectId('6d795f757365725f69643030')})
您可以在 mongoDB API docs 上找到更多信息。
默认在collection中插入文档时,如果不添加字段名中带_id的字段名,则MongoDB会自动添加一个Object id字段如下所示![在此处输入图片描述]
(https://i.stack.imgur.com/w6VDQ.png)
所以,当执行插入查询时,像这样使用 _id...
database.test_collection.insert({'_id': 'my_user_id', 'value': 'my_value'})
如果要确保MongoDB在创建collection时不创建_id字段,如果要指定自己的id作为collection的_id ,那么您需要在创建 collection..
时明确定义它
我正在开发一个 mongo 数据库,出于某种原因,该数据库将用户 ID 存储为 ObjectId
。
为了测试一些功能,我希望能够填充一个测试数据库——例如,如下:
import mongomock
from bson import ObjectId
client = mongomock.MongoClient("mongodb://localhost:27017/test-database")
database = client.get_default_database()
database.test_collection.insert({'_id': ObjectId('my_user_id'), 'value': 'my_value'})
但是,运行这个returns
InvalidId: 'my_user_id' is not a valid ObjectId, it must be a 12-byte input or a 24-character hex string
如何正确地将 ObjectId 对象插入到我的测试数据库中,以便我可以使用
测试查询它database.test_collection.find_one({'user': ObjectId('my_user_id')})
(查询真实数据库时正常)?
如 InvalidId 消息所述,您需要使用 12 字节 'binary' 输入或 24 字符的十六进制字符串。
因此,如果您想使用 'my_user_id' 之类的东西,则需要使用二进制或十六进制表示,并且缺少两个字符,以 12 字节或 24 十六进制表示。
例如,如果您的用户 ID 是 'my_user_id00',那么您可以使用以下任何一个:
database.test_collection.find_one({'user': ObjectId(b'my_user_id00')})
database.test_collection.find_one({'user': ObjectId('6d795f757365725f69643030')})
您可以在 mongoDB API docs 上找到更多信息。
默认在collection中插入文档时,如果不添加字段名中带_id的字段名,则MongoDB会自动添加一个Object id字段如下所示![在此处输入图片描述]
(https://i.stack.imgur.com/w6VDQ.png)
所以,当执行插入查询时,像这样使用 _id...
database.test_collection.insert({'_id': 'my_user_id', 'value': 'my_value'})
如果要确保MongoDB在创建collection时不创建_id字段,如果要指定自己的id作为collection的_id ,那么您需要在创建 collection..
时明确定义它