【发布时间】:2019-06-21 14:55:57
【问题描述】:
所以这是一个思想实验:
mongo 中的 ObjectID 有 24 个字符,因此如果您使用它们构建 URI,它会变得很麻烦。
每个字符都以 16 为基数,因此,如果我们得到最后 8 位数字,它将允许我们进行 16^8 (4,294,967,296) 个唯一组合。
根据ObjectID specification,它由以下组成:
一个 4 字节的值,表示自 Unix 纪元以来的秒数,
一个 5 字节的随机值,
一个 3 字节的计数器,以随机值开头。
是否可以保证,在一个集合中,如果我们使用最后 4 个字节 - 8 个字符 - 每个文档都有一个唯一值?
这样我就可以在模型上创建一个 .id 属性,在 .pre('save') 上分配它,并在该属性上为集合创建一个索引。
我已经测试并确认它适用于 12,856,767 个文档,并计划对其进行彻底测试,但想知道专家的意见,我完全不同意吗?
【问题讨论】: