我是mongodb和堆栈溢出的新手。
我想知道为什么mongodb集合ID是24个十六进制字符? 这有什么重要意义?
我是mongodb和堆栈溢出的新手。
我想知道为什么mongodb集合ID是24个十六进制字符? 这有什么重要意义?
_id
24个字符的十六进制字符串作为主键生成的默认唯一标识符(_id
)对于MongoDB文档是一个 的ObjectId。这是一个12字节的二进制值,通常表示为24个字符的十六进制字符串,以及MongoDB支持的标准字段类型之一 BSON规范。
ObjectId的12个字节使用以下内容构造:
ObjectIds(或根据a生成的类似标识符) GUID 公式)允许在分布式系统中独立生成唯一标识符。
当您扩展到多个应用程序服务器(或者可能是多个数据库节点)时,独立生成唯一ID的能力变得非常重要 分片群集)。您不希望像序列计数器那样存在中央协调瓶颈(例如,您可能拥有自动递增主键),并且您将希望插入新文档而不存在新标识符将成为重复。
ObjectId通常由MongoDB生成 客户司机,但也可以在MongoDB服务器上生成,如果您的客户端驱动程序或应用程序代码或尚未添加 _id
领域。
不可以。如果您有更合适的唯一标识符,您可以随时提供自己的值 _id
。这可以是单个值,也可以是使用多个字段的复合值。
主要限制因素 _id
值是,它们必须是集合的唯一,并且您无法更新或删除 _id
对于现有文档。