是否可以在使用mongodb-engine保存到mongodb的django模型中创建自定义ObjectId?我试图这样做将我想要的字符串传递给ObjectId类型,例如Flight(_id = ObjectId(myid))但是这会给我一个错误,说明该字符串不是有效的id。是否可以使用自定义覆盖id?有什么地方我可以读到这个或创建ID的规则是什么?
示例:
文件“/usr/local/lib/python2.7/dist-packages/bson/objectid.py”,第172行,在__validate中 提高InvalidId(“%s不是有效的ObjectId”%oid) InvalidId:short_profile_4fcad5e8e5095f5a4f000000不是有效的ObjectId
答案 0 :(得分:0)
确定你可以使用自定义objectId,检查objectId documentation,但是我没有取消你需要的东西。
您可以使用所需的任何类型而不是ObjectId。所以你可以创建_id字符串并插入任何strting值而不是mongo ObjectId。但是,对于集合的每个成员,您的自定义_id必须是唯一的。如果集合在_id上有索引,则会强制执行此操作,默认情况下就是这种情况。
来自文档
虽然_id值可以是任何值 type,一个特殊的BSON数据类型 为对象ID提供。这种类型是 设计为12字节的二进制值 具有相当高的概率 分配时是独一无二的。所有的 官方支持的MongoDB 默认情况下,驱动程序使用此类型 _id值。此外,Mongo数据库本身在分配时使用此类型 在没有_id值的插入上的_id值。