在我的应用程序中,我让 mongo 通过其 ObjectId 方法生成订单 ID。
但在用户测试中,我们担心订单 ID 会让人“吓人”,即如果您需要通过电话与某人讨论您的订单,读出 24 个字母数字字符有点乏味。
同时,我真的不想存储两个不同的 id,一个是“人类可访问的”,一个是 mongo 内部使用的。
所以我的问题是 - 有没有办法选择一个长度为 6 甚至 8 的 mongo objectId 字符串的子字符串,我可以相当肯定它是唯一的?
例如,如果我有一个像这样的 mongo objectid
id = '4b28dcb61083ed3c809e0416'
也许我可以拿出
human_id = id.substr(0,7);
并确保我的订单总能获得唯一的 ID...
当然,优点是这些是命令,因此是人为创建的,因此每毫秒不会有数百万个。另一方面,如果两个订单具有相同的缩短 id,那将是一个问题......
---更清晰的解释---
我想问我问题的更好方法是:
例如,如果我决定只使用 mongo id 的最后 6 个字符,是否存在某种“概率”度量,这 6 个字符会在给定的一周内重复?
给定一定数量的mongo并行运行,一周内一定数量的用户等。