【问题标题】:Does replacing the "_id" field in mongodb with a custom unique key decrease performance?用自定义唯一键替换 mongodb 中的“_id”字段会降低性能吗?
【发布时间】:2013-12-25 06:09:38
【问题描述】:

我有一个用户模式,其中包含一个名为“用户名”的唯一字段。同时,mongo 会自动创建自己的唯一键“_id”。

我注意到,对于我的很多模式,我需要一组“用户名”和“ID”。有时这很多余,所以我的问题是:

通过“_id”查找是否比查找“用户名”字段(假设是 10 个字符的字符串)更快?如果它们相同,是否可以使用我的唯一标识符用户名作为 _id 的值?

【问题讨论】:

  • 如果您允许更改用户名值,请考虑将其存储为键对数据模型的影响。

标签: mongodb mongoose


【解决方案1】:

如果您的数据自然有一个必填的唯一字段,那么使用该值作为您的_id 是完全可以的。

只要字段的数据在大小上与 ObjectId 相当(即 12 个字节),那么性能应该是相同的。 10 个字符的字符串是 20 个字节,因此用户名的索引会占用更多内存,但可能不足以在性能方面产生影响。

由于您使用的是 Mongoose,您还可以创建一个虚拟字段(名为 username),该字段也使用更具描述性的名称公开 _id 字段。

【讨论】:

    【解决方案2】:

    我认为这很好,除非您将来要更改用户名的结构。因此,我认为最好只使用 ObjectId() 作为 ID,然后在需要时添加一个额外的字段 username

    【讨论】:

      猜你喜欢
      • 1970-01-01
      • 2015-03-15
      • 1970-01-01
      • 2018-12-12
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 2011-02-06
      • 2013-08-30
      相关资源
      最近更新 更多