10

在 Mongo 文档中,它声明了以下内容:

_id 字段可以是任何类型;但是,它必须是唯一的。因此,您可以在 _id 字段中使用 UUID 而不是 BSON ObjectIds(BSON ObjectIds 略小;它们不必是全球唯一的,只对单个数据库集群是唯一的)。使用 UUID 时,您的应用程序必须自己生成 UUID。理想情况下,为了提高效率,UUID 会存储在 [DOCS:BSON] 类型中——但是,如果您知道空间和速度对用例来说不是问题,您也可以将其作为十六进制字符串插入。

既然如此,有人可以指导我如何为我的所有 Mongo 文档创建一个 [DOCS:BSON] 格式的防弹的、全球唯一的 GUID 吗?我想确保我永远不会有重复的 GUID,即使跨集群也是如此。是否有人对 Mongo 和 GUID 的最佳实践有任何经验或想法?使用 Mongos 本机 ID 系统会更容易,但如果需要,在插入和生成新的 ObjectID 之前检查重复项?

4

2 回答 2

8

如果你想要一个唯一的 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')}
于 2012-08-16T22:03:27.533 回答
5
import uuid
uuid.uuid1()

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

于 2012-08-16T15:42:03.853 回答