Mongodb-engine和Django创建自定义ObjectId

时间:2011-02-17 12:02:49

标签: python django mongodb

是否可以在使用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

1 个答案:

答案 0 :(得分:0)

确定你可以使用自定义objectId,检查objectId documentation,但是我没有取消你需要的东西。

您可以使用所需的任何类型而不是ObjectId。所以你可以创建_id字符串并插入任何strting值而不是mongo ObjectId。但是,对于集合的每个成员,您的自定义_id必须是唯一的。如果集合在_id上有索引,则会强制执行此操作,默认情况下就是这种情况。

来自文档

  

虽然_id值可以是任何值   type,一个特殊的BSON数据类型   为对象ID提供。这种类型是   设计为12字节的二进制值   具有相当高的概率   分配时是独一无二的。所有的   官方支持的MongoDB   默认情况下,驱动程序使用此类型   _id值。此外,Mongo数据库本身在分配时使用此类型   在没有_id值的插入上的_id值。