首页
学习
活动
专区
工具
TVP
发布
精选内容/技术社群/优惠产品,尽在小程序
立即前往

MongoDB的ObjectId组成

ObjectId的官方规范 1)Time 时间戳。将刚才生成的objectid的前4位进行提取“5e4fa350”,然后按照十六进制转为十进制,变为“1582277456”,这个数字就是一个时间戳。...上面的Machine是为了确保在不同机器产生的objectId不冲突,而pid就是为了在同一台机器不同的mongodb进程产生了objectId不冲突,接下来的“af71”两位就是产生objectId的进程标识符...前面的九个字节是保证了一秒内不同机器不同进程生成objectId不冲突,这后面的三个字节“5d6f62”是一个自动增加的计数器,用来确保在同一秒内产生的objectId也不会发现冲突,允许256的3次方等于...总的来看,objectId的前4个十六进制字符是时间戳,记录了文档创建的时间;接下来3个十六进制字符代表了所在主机的唯一标识符,确定了不同主机间产生不同的objectId;后2个是进程id,决定了在同一台机器下...,不同mongodb进程产生不同的objectId;最后通过3个是自增计数器,确保同一秒内产生objectId的唯一性。

1.1K10
您找到你想要的搜索结果了吗?
是的
没有找到

从根上理解MongoDB的ObjectId生成原理!

官网中对 ObjectId 的规范有以下描述: MongoDB中的ObjectId规范 上面的这个图中,有一个重点信息。...上面的 Machine 是为了确保在不同机器产生的 ObjectId 不冲突,而 pid 就是为了在同一台机器不同的 mongodb 进程中产生的 ObjectId 不冲突。...前面的九个字节是保证了一秒内不同机器不同进程生成 ObjectId 不冲突,最后面的这三个字节9fa835是一个自动增加的计数器,用来确保在同一秒内产生的 ObjectId 也不会发生冲突,允许 256...或者让客户端产生 ObjectId(客户端生成 ObjectId 我们后面再单独来讨论)。...id,决定了在同一台机器下,不同 mongodb 进程产生不同的 ObjectId;最后通过 3 个字节的自增计数器,确保同一秒内产生 ObjectId 的唯一性。

1K20

mongodb11天之屠龙宝刀(三)基本操作:增删改查与mysql对比

ObjectId   ObjectId 是”_id” 的默认类型。它设计成轻量型的,不同的机器都能用全局唯一的同种方法方便地生成它。...但关键是要知道这个长长的ObjectId 是实际存储数据的两倍长。   如果快速连续创建多个ObjectId,会发现每次只有最后几位数字有变化。...为了确保在同一台机器上并发的多个进程产生的ObjectId 是唯一的,接下来的两字节来自产生ObjectId 的进程标识符(PID)。...前9 字节保证了同一秒钟不同机器不同进程产生的ObjectId 是唯一的。后3 字节就是一个自动增加的计数器,确保相同进程同一秒产生的ObjectId 也是不一样的。...在客户端生成ObjectId,驱动程序能够提供更加丰富的API。例如,驱动程序可以有自己的insert 方法,可以返回生成的ObjectId,也可以直接将其插入文档。

62630
领券