是否为整个集合构建了createIndex()一个新索引?

时间:2017-01-09 13:45:20

标签: mongodb

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

  

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

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

1 个答案:

答案 0 :(得分:0)

构建索引会索引所有现有文档,并且还会导致所有将来的文档都被编入索引。因此,如果您将insert个新文档放入已编入索引的集合(或update现有文档的索引字段中),索引将会更新。

当您调用createIndex并且相同字段的相同类型的索引已经存在时,没有任何反应。