如何更好地利用MongoDB生成的objectId。我不是专家用户,但到目前为止我最终为我的对象(userid,postid)等创建了单独的id,因为对象id太长并且如果用作主ID则使url变得丑陋。我保持_id
完整,因为它有助于索引等。我想知道任何更好的策略,以便可以使用mongo objectId作为更友好和易记的密钥。我读到密钥是日期等的组合,因此任何部分都可以在集合中用于此目的。
感谢,
BSR /
答案 0 :(得分:3)
如果您拥有现有ID(来自现有数据集),那么用你拥有的那个覆盖_id
就完全可以了。< / p>
...保持_id原封不动,因为它有助于索引等
MongoDB默认为_id
字段编制索引。如果你开始在_id
字段中输入整数,它们将被编入其他所有内容的索引。
因此大多数RDBM都提供“自动增量”ID。这对于小型数据集很有用,但在可伸缩性方面确实很差。如果您尝试一次向20台服务器插入数据,那么如何保持“自动增量”不变?
正常的答案是你没有。相反,您最终会使用GUID等内容来处理这些ID。对于MongoDB,已经提供了ObjectId
。
我想知道任何更好的策略,以便可以使用mongo objectId作为更友好且易记的密钥
所以这里的问题是“容易记住”ID并不真正与“高度可扩展的数据库”相匹配。当你有十亿个文件时,这些ID并不是“容易记住”。
所以你必须在这里做出权衡。如果你有一个可以变大的表,我建议使用ObjectId。如果你有一个相对较小且不经常更新的表(如“查找”表),那么你可以构建自己的自动增量。
选择权取决于你。
答案 1 :(得分:0)
您可以自己覆盖_id 。没有义务使用自动生成的对象ID。根据您自己的需要在您的应用内覆盖_id有什么问题?