MongoDB ObjectID生成规则影响插入顺序

时间:2018-11-29 07:07:47

标签: mongodb

我是Mongodb的新用户,摘自MongoDB官方文档links
它显示:

  

返回一个新的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),但是当计数器以非常大的值开始时。会发生什么? (我的意思是,这会影响写入数据的总量吗?以及插入顺序)

谢谢。

1 个答案:

答案 0 :(得分:0)

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

  

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

     

重要

     

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

     

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

此文件显示。它们在某些情况下不规则。