我正在开发一个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'})
但是,运行此命令会返回
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')})
(当我查询真实的数据库时,哪一个工作正常)?你知道吗
您需要使用12字节的“二进制”输入或24个字符的十六进制字符串作为invalid消息状态。你知道吗
因此,如果您想使用类似“my\u user\u id”的内容,您需要使用二进制或十六进制表示法,也就是说,缺少两个12字节或24十六进制的字符。你知道吗
例如,如果您的用户id为“my\u user\u id00”,则可以使用以下任一项:
您可以在mongoDB API docs上找到更多信息。你知道吗
默认情况下,在集合中插入文档时,如果您没有在字段名中添加带有\u id的字段名,那么MongoDB将自动添加一个Object id字段,如下所示![在此处输入图像描述]
(https://i.stack.imgur.com/w6VDQ.png)
因此,在执行insert查询时,请像这样使用\u id。。。你知道吗
如果要确保MongoDB在创建集合时不创建\u id字段,并且要将自己的id指定为集合的\u id,则需要在创建集合时显式定义此字段。。你知道吗
相关问题 更多 >
编程相关推荐