In most circumstances, you should let the automatic balancer migrate chunks between shards. However, you may want to migrate chunks manually in a few cases:
To manually migrate chunks, use the moveChunk command. For more information on how the automatic balancer moves chunks between shards, see Cluster Balancer and Chunk Migration.
Example
Migrate a single chunk
The following example assumes that the field username is the shard key for a collection named users in the myapp database, and that the value smith exists within the chunk to migrate. Migrate the chunk using the following command in the mongo shell.
This command moves the chunk that includes the shard key value “smith” to the shard named mongodb-shard3.example.net. The command will block until the migration is complete.
Tip
To return a list of shards, use the listShards command.
Example
Evenly migrate chunks
To evenly migrate chunks for the myapp.users collection, put each prefix chunk on the next shard from the other and run the following commands in the mongo shell:
See Create Chunks in a Sharded Cluster for an introduction to pre-splitting.
The moveChunk command has the: _secondaryThrottle parameter and the writeConcern parameter that determines when the balancer proceeds with the next document in the migrating chunk. See moveChunk command for details.