【问题标题】:Does build createIndex() a new index over the whole collection?是否在整个集合上构建 createIndex() 新索引?
【发布时间】:2017-05-23 19:10:33
【问题描述】:

当我将一个新文档添加到我的集合并运行 createIndex() 函数时会发生什么。 MongoDB 是否在整个集合上构建新索引(耗时和资源消耗)?还是 MongoDB 只是更新单个文档的索引(节省时间和资源)?我不确定,因为我在文档 (3.0) 中找到了这个:

默认情况下,MongoDB 在前台构建索引,这会在索引构建时阻止对数据库的所有读写操作。此外,在前台索引构建期间不会发生需要对所有数据库(例如 listDatabases)进行读取或写入锁定的操作。

我问是因为我需要一个动态的 2dsphere 索引,该索引将持续更新。如果它需要每次都在整个集合上建立索引,那将花费太多时间。

【问题讨论】:

    标签: mongodb


    【解决方案1】:

    建立索引会为所有现有文档编制索引,并且还会使所有未来的文档也被编制索引。因此,如果您将新文档insert 放入已索引的集合(或update 现有文档的索引字段),则索引将得到更新。

    当您调用createIndex 并且在相同字段上已经存在相同类型的索引时,什么都不会发生。

    【讨论】:

      猜你喜欢
      • 1970-01-01
      • 2020-05-01
      • 2019-04-10
      • 2020-12-16
      • 2017-05-24
      • 2021-02-19
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      相关资源
      最近更新 更多