今天我做了一些工作,当时我注意到我的一个MongoDB文档中有一些奇怪的东西:
Mongo在ObjectID中拼写单词是正常的还是这表明生成_id
字段的随机化存在问题?
我要密切留意这一点,但是如果有人知道这是否应该关注,请事先感谢任何帮助。
答案 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毫秒的间隔内都会相同。
这里没有错误或弱点,只是当天的一个有趣点。