This version of the documentation is archived and no longer supported.


On this page


The reIndex command drops all indexes on a collection and recreates them. This operation may be expensive for collections that have a large amount of data and/or a large number of indexes.


  • For most users, the reIndex command is unnecessary.
  • Avoid running reIndex for a replica set.
  • Do not run reIndex for a sharded cluster.

Use the following syntax:

{ reIndex: <collection> }

The command takes the following fields:

Field Description
reIndex The name of the collection to reindex.

The mongo shell provides a wrapper db.collection.reIndex().



For replica sets, reIndex will not propagate from the primary to secondaries. reIndex will only affect a single mongod instance.

reIndex always builds indexes in the foreground due to the logic described in Multiple Index Builds.

Resource Locking

Changed in version 4.0.

Starting in MongoDB 4.0 reIndex obtains a global exclusive (W) lock and blocks other operations on the mongod until it completes.

For MongoDB 3.6 and earlier, these operations reIndex obtains an exclusive (W) lock on the database and blocks other operations on the database until finished.

For more information on locking in MongoDB, see FAQ: Concurrency.


Index Build Operations on a Populated Collection for more information on the behavior of indexing operations in MongoDB.