参考 > 参考 > 数据库命令 > 管理命令 > 索引
在本页面
reIndex
该reIndex命令将所有索引放在集合上并重新创建它们。对于具有大量数据和/或大量索引的集合,此操作可能会很昂贵。
警告
对于大多数用户而言,该reIndex命令是不必要的。
避免运行reIndex副本集。
不要reIndex针对分片群集中的集合运行。
在版本4.2中进行了更改: MongoDB不允许reIndex在上运行 mongos,从而对分片reIndex群集中的集合实施了更严格的限制。
mongos
使用以下语法:
{ reIndex: <collection> }
该命令包含以下字段:
该mongo外壳提供了封装db.collection.reIndex()。
mongo
db.collection.reIndex()
注意
对于副本集,reIndex不会从主要副本传播 到次要副本。reIndex只会影响单个mongod实例。
mongod
在版本4.2.2中更改。
对于MongoDB 4.2.2和更高版本,reIndex在集合上获得排他(W)锁,并在集合完成之前阻止其他操作。
对于MongoDB 4.0.0至4.2.1,reIndex获得全局排他(W)锁并在上阻止其他操作, mongod直到完成。
对于MongoDB 3.6及更早版本,reIndex 在数据库上获得一个排他(W)锁,并阻塞数据库上的其他操作,直到完成。
有关锁定MongoDB的更多信息,请参阅FAQ:并发。
看到
在填充集合上建立索引,以获取有关MongoDB中索引操作行为的更多信息。