MongoDB ensureIndex是否执行重建?
我在读MongoFB文档。 在这个url 我读 使用mongo shell中的ensureIndex()或驱动程序中的类似方法创建新索引。 此操作将在此mongod实例上创建或重建索引“ 我很明白? 如果索引已经存在,mongoDB是否执行重建 因此,“reIndex()”的区别在于reIndex()对集合的所有索引执行重建。MongoDB ensureIndex是否执行重建?,mongodb,mongodb-indexes,Mongodb,Mongodb Indexes,我在读MongoFB文档。 在这个url 我读 使用mongo shell中的ensureIndex()或驱动程序中的类似方法创建新索引。 此操作将在此mongod实例上创建或重建索引“ 我很明白? 如果索引已经存在,mongoDB是否执行重建 因此,“reIndex()”的区别在于reIndex()对集合的所有索引执行重建。 这是正确的吗?我认为这可能是一个英文错误,也可能是因为您正在副本集上重建索引。ensureIndex()的文档特别指出: (从此处链接到的一个:) 如果同时使用相同的索引
这是正确的吗?我认为这可能是一个英文错误,也可能是因为您正在副本集上重建索引。
ensureIndex()
的文档特别指出:
(从此处链接到的一个:)
如果同时使用相同的索引规范调用多个ensureIndex()方法,则只有第一个操作将成功,所有其他操作将无效
因此,除非您正在重建索引,否则再次调用它不应导致重建
如果要重建索引,必须先删除它,然后重新运行ensureIndex()
:
要添加或更改索引选项,必须使用dropIndex()方法删除索引,并使用新选项执行另一个ensureIndex()操作
如果使用一组选项创建索引,然后在不首先删除索引的情况下使用相同的索引字段和不同的选项发出ensureIndex()方法,ensureIndex()将不会使用新选项重建现有索引
我认为这可能是一个英文错误,如果索引已经存在,那么ensureIndex()会注册一个no op,或者至少应该注册