Mongodb 将mongo ObjectId用作用户是一种不好的做法吗';谁的身份证?
鉴于此值是唯一的,并且对于mongo数据库中的所有用户都存在,在web应用程序中使用此值作为用户标识符是否有任何特别的注意事项 我可能会考虑的具体问题包括将来是否需要转移用户 。。。在web应用程序中使用它作为用户标识符有什么特别的注意事项吗 我见过一些:Mongodb 将mongo ObjectId用作用户是一种不好的做法吗';谁的身份证?,mongodb,Mongodb,鉴于此值是唯一的,并且对于mongo数据库中的所有用户都存在,在web应用程序中使用此值作为用户标识符是否有任何特别的注意事项 我可能会考虑的具体问题包括将来是否需要转移用户 。。。在web应用程序中使用它作为用户标识符有什么特别的注意事项吗 我见过一些: 这对于URL来说不是很好。Twitter给了我一个类似的URL,用ObjectId你会得到一个类似的URL ObjectId碎片非常糟糕。这并不是随机的,而是有点顺序的,所以新用户会聚集在碎片上,而不是随机分布 您通常需要另一个唯一标识符。大
转到哪里?一旦您开始在MongoDB中存储用户的数据,ID将是您传输到另一个DB的最小问题。所有现代DBs都可以处理某种形式的字符串或二进制作为主键ID,因此您的传输应该可以正常工作。但大部分复杂性与ID无关。我也计划提供用户名和电子邮件(因此短链接是可能的),但我的意思是,在我的应用程序逻辑内部,ObjectID是否合适,或者我是否应该生成另一个数字ID?分片是否必须按ID排序?以及在传输方面,我的意思是导出数据并导入到另一个mongodb实例。(不切换到sql或任何东西)。我知道_id大部分时间是在insert上分配的,所以它们会保留旧的还是所有引用都需要更新?@arcyqwerty:正如GatesVP所提到的,默认ObjectID对于唯一性来说是很好的,但不会产生任何影响。然而。。您不必在
\u id
字段中输入。ObjectID通常比递增的数字ID更容易使用。。因为任何类型的字段都需要您计算出下一个要分配的字段。@arcyqwerty:还需要注意,您选择的\u id
字段都将是一个(即,永远不能更改)。在GatesVP的建议3中,你可以考虑使用用户名作为子ID。只要这不需要改变。如果您正在查看相关文档,则用户名的副作用将是比ObjectID/GUID更具可读性的引用。尺寸差异可能不是问题。。objectid将是12个二进制字节;一个平均用户名只能稍微少一点。