让我们以一篇博客文章为例,其中帖子的标题生成了一个独特的段塞:sample_blog_post。假设您将段塞存储在_id中,而不是存储mongoObjectId作为_id。除了标题更改时段塞可能会发生变化的明显情况之外,使用字符串而不是数字_id在性能方面是否存在重大劣势?如果帖子数量变得非常大,例如超过一百万,这可能会成为问题。但是如果帖子数量相对较低,例如2000,会有很大的不同吗?到目前为止,关于ObjectId,我想我唯一能利用的是created_on免费的日期。
因此,总而言之,是否值得存储作为_id而不使用ObjectId?似乎讨论了如何将替代值存储为_id,但没有讨论它的性能优势/劣势。
因此,总而言之,是否值得将段塞存储为_id
而不使用ObjectId
?
在我看来,没有。对于大多数场景(除了分页),性能差异将可以忽略不计,但是
本质上,你最终会得到一个像
{ "_id" : ObjectId("a237b45..."), // PK
"slug" : "mongodb-is-fun", // not indexed
"hash" : "5af87c62da34" } // indexed, unique