如何更好地利用 MongoDB 生成的 objectId。我不是专家用户,但到目前为止,我最终为我的对象(userid、postid)等创建了单独的 id,因为对象 id 太长并且如果用作主 ID 会使 url 难看。我保持 _id
完整,因为它有助于索引等。我想知道任何更好的策略,以便可以使用 mongo objectId 作为对 url 更友好且易于内存的键。我读到关键是日期等的组合,因此任何部分都可以为此目的在集合中唯一使用。
谢谢,
bsr/
最佳答案
如果您有一个现有 ID(来自现有数据集),那么用您的 ID 覆盖 _id
是完全可以的有。
...keeo the _id intact as it help indexing etc
MongoDB 默认索引 _id
字段。如果您开始将整数放入 _id
字段,它们将像其他所有内容一样被索引。
因此,大多数 RDBM 都提供“自动递增”ID。这对于小型数据集来说很好,但在可扩展性方面确实很差。如果您尝试一次向 20 台服务器插入数据,如何保持“自动增量”不变?
通常的答案是你没有。相反,您最终会为这些 ID 使用 GUID 之类的东西。对于 MongoDB,ObjectId
已经提供。
I was wondering about any better strategy so that one can use mongo objectId as more url friendly and easy to remember key
所以这里的问题是“容易记住”的 ID 并不能真正与“高度可扩展的数据库”相结合。当您有十亿个文档时,ID 并不是真的“好记”。
所以你必须在这里做出权衡。如果您有一个可以变得非常大的表,我建议使用 ObjectId。如果您有一个相对较小且不经常更新的表(例如“查找”表),那么您可以构建自己的自动增量。
选择权完全取决于您。
关于Mongodb:对象ID作为集合中的短主键,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/5779671/