首页 > 解决方案 > MongoDB ObjectID 生成规则影响插入顺序

问题描述

我是一个新的 Mongodb 用户,从它显示的 MongoDB 官方文档链接
中:

返回一个新的 ObjectId 值。12 字节的 ObjectId 值包括:

a 4-byte value representing the seconds since the Unix epoch,
a 5-byte random value, and
a 3-byte counter, starting with a random value.

在我对 mongodb 的极限体验中,我认为它就像这个
时间戳 + 随机值 + 计数器

这是我的问题
1. 生成的随机数小于前一秒插入生成的随机数。数据插入的顺序和数据的ObjectID顺序不一样?是吗?
2. 计数器也以随机值启动。我认为计数器的最大值是 2^3*8 (2^24) ,但是当计数器以非常大的值开始时。会发生什么?(我的意思是这会影响写入数据的总量吗?和插入顺序)

提前致谢 。

标签: mongodb

解决方案


最后。我找到了一些关于这个问题的文件。

对存储 ObjectId 值的 _id 字段进行排序大致相当于按创建时间排序。

重要的

虽然 ObjectId 值应随时间增加,但它们不一定是单调的。这是因为他们:

仅包含一秒的时间分辨率,因此在同一秒内创建的 ObjectId 值没有保证顺序,并且由可能具有不同系统时钟的客户端生成。

这份文件显示。他们在某些情况下并不有序。


推荐阅读