我有一个用户集合,显然所有登录都是唯一的,此时我想不出使用它们而不是默认生成的MongoId的原因。这种方法有什么缺点吗?
答案 0 :(得分:1)
是的,听起来完全没问题。在进行分片时,ObjectIds非常有用,提供内置的时间戳,并且可能更有效地进行索引,存储,因为它们的大小都相同。但是,如果您的应用程序使用登录更有意义,那么它应该可以正常工作。
答案 1 :(得分:0)
如果您的登录信息也是电子邮件地址,那么在某些时候,您的用户将更改其电子邮件地址,如果您将其用作_id
,则会导致问题。即使您不使用电子邮件地址登录,您仍可能希望允许用户更改其用户名。
但我要问的问题是,使用登录作为_id
是否有任何缺点:是否有使用标准ObjectId
字段的缺点?您希望通过使用登录获得什么?
正如Tyler Brock在他的回答中指出的那样,使用ObjectId
会给你一些额外的好处,因为在ObjectId
中编码了一些额外的信息,例如时间戳和MongoDB实例的标识符创建了该文档。有一天可能会有用。
根据我的经验,除非有时甚至如果这是一个非常好的理由,否则通常会更好地选择您正在使用的技术流程。