使用唯一字符串而不是MongoId作为_id是否有任何缺点?

时间:2011-12-02 22:08:07

标签: php mongodb

我有一个用户集合,显然所有登录都是唯一的,此时我想不出使用它们而不是默认生成的MongoId的原因。这种方法有什么缺点吗?

2 个答案:

答案 0 :(得分:1)

是的,听起来完全没问题。在进行分片时,ObjectIds非常有用,提供内置的时间戳,并且可能更有效地进行索引,存储,因为它们的大小都相同。但是,如果您的应用程序使用登录更有意义,那么它应该可以正常工作。

答案 1 :(得分:0)

如果您的登录信息也是电子邮件地址,那么在某些时候,您的用户将更改其电子邮件地址,如果您将其用作_id,则会导致问题。即使您不使用电子邮件地址登录,您仍可能希望允许用户更改其用户名。

但我要问的问题是,使用登录作为_id是否有任何缺点:是否有使用标准ObjectId字段的缺点?您希望通过使用登录获得什么?

正如Tyler Brock在他的回答中指出的那样,使用ObjectId会给你一些额外的好处,因为在ObjectId中编码了一些额外的信息,例如时间戳和MongoDB实例的标识符创建了该文档。有一天可能会有用。

根据我的经验,除非有时甚至如果这是一个非常好的理由,否则通常会更好地选择您正在使用的技术流程。