0

我正在阅读 MongoFB 文档。在这个网址 http://docs.mongodb.org/manual/tutorial/build-indexes-on-replica-sets/ 我读到 “使用 mongo shell 中的 ensureIndex() 或驱动程序中的类似方法创建新索引. 此操作将在此 mongod 实例上创建或重建索引"

我明白吗?如果索引已经存在,mongoDB 是否执行重建?

因此,与“reIndex()”的区别在于 reIndex() 对集合的所有索引执行重建。这是对的吗?

4

1 回答 1

2

我认为这要么是一个英语错误,要么是在谈论您是否要在副本集上重建索引,无论哪种方式,文档都ensureIndex()明确指出:

http://docs.mongodb.org/manual/reference/method/db.collection.ensureIndex/#behaviors(从这里链接到:http: //docs.mongodb.org/manual/tutorial/build-indexes-副本集/#build-the-index

如果同时调用多个具有相同索引规范的 ensureIndex() 方法,只有第一个操作会成功,其他所有操作都没有效果。

因此,除非您正在重建索引,否则再次调用它不应导致重建。

如果要重建索引,必须先删除它,然后重新运行ensureIndex()

要添加或更改索引选项,您必须使用 dropIndex() 方法删除索引并使用新选项发出另一个 ensureIndex() 操作。

如果您使用一组选项创建索引,然后使用相同的索引字段和不同的选项发出 ensureIndex() 方法而不首先删除索引,则 ensureIndex() 不会使用新选项重建现有索引。

于 2014-03-12T18:29:23.140 回答