将新文档添加到我的集合并运行createIndex()函数时会发生什么。 MongoDB是否为整个集合构建了一个新索引(耗费时间和资源)?或者MongoDB只是更新单个文档的索引(节省时间和资源)?我不确定,因为我在文档(3.0)中找到了这个:
默认情况下,MongoDB在前台构建索引,这会在索引构建时阻止对数据库的所有读写操作。此外,在前台索引构建期间,不会对所有数据库(例如listDatabases)执行读取或写入锁定的操作。
我在问,因为我需要一个动态的2dsphere索引,它将连续更新。如果它需要在整个集合中每次构建索引,那将花费太多时间。
答案 0 :(得分:0)
构建索引会索引所有现有文档,并且还会导致所有将来的文档都被编入索引。因此,如果您将insert
个新文档放入已编入索引的集合(或update
现有文档的索引字段中),索引将会更新。
当您调用createIndex
并且相同字段的相同类型的索引已经存在时,没有任何反应。