在Mongo文档中,它声明如下:
_id字段可以是任何类型;但是,它必须是独一无二的。因此你 可以在_id字段中使用UUID而不是BSON ObjectIds(BSON ObjectIds略小;它们不一定是世界上独一无二的 对于单个数据库集群而言是唯一的)。使用UUID时,你的 应用程序必须自己生成UUID。理想情况下,UUID就是这样 存储在[DOCS:BSON]类型中以提高效率 - 但您也可以 如果您知道空间和速度不是一个,请将其作为十六进制字符串插入 用例问题。
既然如此,有人可以告诉我如何为所有Mongo文档以[DOCS:BSON]格式创建防弹,全球唯一的GUID吗?我想确保在任何时候都不会有重复的GUID,甚至跨群集。对于Mongo和GUID,有没有人对最佳实践有任何经验或想法?是否更容易使用Mongos本机ID系统,但在插入之前检查重复项并在需要时生成新的ObjectID?
答案 0 :(得分:7)
如果你想要一个唯一的id,并且不想使用ObjectId,你可能想要使用uuid4:
>>> import pymongo
>>> import uuid
>>> c = pymongo.Connection()
>>> uu = uuid.uuid4()
>>> uu
UUID('14a2aad7-fa01-40a4-8a80-04242b946ee4')
>>> c.test.uuidtest.insert({'_id': uu})
UUID('14a2aad7-fa01-40a4-8a80-04242b946ee4')
>>> c.test.uuidtest.find_one()
{u'_id': UUID('14a2aad7-fa01-40a4-8a80-04242b946ee4')}
答案 1 :(得分:5)
import uuid
uuid.uuid1()