在 MongoDB 的 _id 字段中存储用户名的 sha256 哈希是否有效?

Is it efficient to store sha256 hash of username in _id field in MongoDB?

我特别需要对用户名进行哈希处理,而且为了我的目的,我还需要保持用户名的唯一性。所以,我的问题是我可以用用户名的 sha256 哈希覆盖 mongoDB 的默认“_id”字段吗?我读到 _id 需要是唯一的并且已经编入索引,所以为什么我要创建另一个条目而不是存储在 _id 中。

这会导致任何我不知道的技术问题吗?在索引 _id 时搜索它是否有效?

此应用程序是一个使用 Flask-pymongo 作为 mongo 驱动程序和助手的 Flask 应用程序。

默认:

_id : ObjectId(...)

我需要:

_id : sha256(用户名)

如果此方法有任何问题,请解释。

从技术上讲,_id 的值使用 sha256 没有问题。 MongoDB 中的默认 ObjectId 类型便于“当场”创建唯一值,但 不需要 _id中的位模式必须是唯一的,仅此而已。

从数据设计的角度来看,如果您对用户数据(例如 sha256)使用函数来创建链接到物理数据库机制(例如 _id)的 material,您必须确保用户数据在数据的生命周期内不会改变。在这种情况下,username 可能没问题,但例如电子邮件地址可能很差,因为用户可以更改他们的电子邮件地址。