MongoDB创建唯一字段但没有索引?

时间:2019-01-19 21:19:58

标签: mongodb indexing

在Mongo中,是否可以通过任何选择将字段设置为unique,但不能将其设置为index,因为每个索引都占用一些空间,并且每次插入都会产生开销,更新和删除,而且由于我很少使用此字段进行读取操作,因此,我只想限制唯一性,而不希望通过使用索引来获得任何性能提升。

2 个答案:

答案 0 :(得分:1)

据我所知,没有办法也没有理由这样做。

是什么意思
  

每次插入,更新和删除时的开销

那笔开销来自唯一的约束,而不是因为索引。

  

每个索引都占用一些空间

是的,当然,要在HDD或SSD中存储索引需要一些空间,但是只要您不执行read/query,就不会影响其他操作的性能。

了解更多:MongoDB Internal implementation of indexing ?

答案 1 :(得分:1)

或者,您可以在_id字段中使用自定义值,即:

  • 必须出现在每个文档中
  • 必须在集合中具有唯一值
  • 默认情况下编入索引

Field Names部分:

  

保留字段名称_id用作主键;其值在集合中必须是唯一的,不可变的,并且可以是数组以外的任何其他类型。

如果在插入文档时未提供_id字段,则MongoDB将使用ObjectId为您创建一个字段。

如果您的要求要求使用唯一约束,并且您不想创建额外的索引来强制唯一性,则只需使用_id字段。