如何使用Python为Mongo创建全球唯一的GUID/UUID系统?

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?

Ber*_*ett 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')}
Run Code Online (Sandbox Code Playgroud)


use*_*136 5

import uuid
uuid.uuid1()
Run Code Online (Sandbox Code Playgroud)

资料来源:http://docs.python.org/library/uuid.html

  • PyMongo会自动为您序列化UUID.你不必对它们做任何特殊的事情. (2认同)