zak*_*ces 9 python uuid guid mongodb pymongo
在Mongo文档中,它声明如下:
_id字段可以是任何类型; 但是,它必须是独一无二的.因此,您可以在_id字段中使用UUID而不是BSON ObjectIds(BSON ObjectIds稍微小一点;它们不必是全球唯一的,对于单个数据库集群而言是唯一的).使用UUID时,您的应用程序必须自己生成UUID.理想情况下,UUID然后存储在[DOCS:BSON]类型中以提高效率 - 但是如果您知道空间和速度不会成为用例的问题,您也可以将其作为十六进制字符串插入.
既然如此,有人可以指导我如何为所有Mongo文档以[DOCS:BSON]格式创建防弹,全球唯一的GUID吗?我想确保在任何时候都不会有重复的GUID,甚至跨群集.对于Mongo和GUID,有没有人对最佳实践有任何经验或想法?是否更容易使用Mongos本机ID系统,但在插入之前检查重复项并在需要时生成新的ObjectID?
如果你想要一个唯一的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')}
Run Code Online (Sandbox Code Playgroud)
import uuid
uuid.uuid1()
Run Code Online (Sandbox Code Playgroud)
资料来源:http://docs.python.org/library/uuid.html