Mongo ObjectID是否应该拼写单词?

时间:2014-08-25 07:06:10

标签: mongodb mongohq compose

今天我做了一些工作,当时我注意到我的一个MongoDB文档中有一些奇怪的东西:

The Owls Are Not What They Seem

Mongo在ObjectID中拼写单词是正常的还是这表明生成_id字段的随机化存在问题?

我要密切留意这一点,但是如果有人知道这是否应该关注,请事先感谢任何帮助。

1 个答案:

答案 0 :(得分:4)

嗯,这只是一个没有严肃意图的有趣的复活节彩蛋。欢迎来到八月二十五日。

这里纯粹的机会是" 53facade"恰好对应于以下的纪元时间:

"星期一,2014年8月25日05:34:22 GMT"。

看看整个部分:

  

ObjectId是一个12字节的BSON类型,使用:

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

因此,打开4-btye表示(在所有字符中都是有效的十六进制)是从创建时的当前时间戳值派生的,恰好在发生这种情况时发生1408944862

只是共同发生并且完全有效。正如你所看到的,它是"休息"确定"随机性的标识符"确实"独特" ObjectId的属性,因为此时创建的所有ObjectId值在1000毫秒的间隔内都会相同。

这里没有错误或弱点,只是当天的一个有趣点。