gpt4 book ai didi

mongodb - MongoDB中的集合ID长度

转载 作者:IT老高 更新时间:2023-10-28 13:11:57 33 4
gpt4 key购买 nike

我是 mongodb 和堆栈溢出的新手。

我想知道为什么 mongodb 集合 ID 是 24 个十六进制字符?这有什么重要性?

最佳答案

为什么默认的 _id 是 24 个字符的十六进制字符串?

作为 MongoDB 文档的主键 (_id) 生成的默认唯一标识符是 ObjectId .这是一个 12 字节的二进制值,通常表示为 24 个字符的十六进制字符串,是 MongoDB BSON specification 支持的标准字段类型之一。 .

ObjectId 的 12 个字节是使用以下方法构造的:

  • 一个 4 字节的值,表示自 Unix 纪元以来的秒数
  • 一个 3 字节的机器标识符
  • 一个 2 字节的进程 ID
  • 一个 3 字节的计数器(以随机值开始)

ObjectId 的重要性是什么?

ObjectIds(或根据 GUID 公式生成的类似标识符)允许在分布式系统中独立生成唯一标识符。

当您扩展到多个应用程序服务器(或者可能是 sharded cluster 中的多个数据库节点)时,独立生成唯一 ID 的能力变得非常重要。您不希望有一个像序列计数器这样的中央协调瓶颈(例如,您可能有一个自动递增的主键),并且您希望插入新文档而不会有新标识符会变成重复。

ObjectId 通常由您的 MongoDB client driver 生成,但如果您的客户端驱动程序或应用程序代码或尚未添加 _id 字段,也可以在 MongoDB 服务器上生成。

我必须使用默认的 ObjectId 吗?

没有。如果您有更合适的唯一标识符来使用,您可以随时为 _id 提供您自己的值。这可以是单个值,也可以是使用多个字段的复合值。

_id 值的主要限制是它们对于集合必须是唯一的,并且您不能更新或删除现有文档的 _id

关于mongodb - MongoDB中的集合ID长度,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/25356211/

33 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com