The sh.status() and db.collection.getShardDistribution() commands, described earlier, allow you to determine the actual distribution of documents between chunks. Once you have determined that the distribution is uneven, you have the option to manually split a chunk. The shell helper method you can use is sh.splitAt(). The generic syntax is shown here:
sh.splitAt(DB.COLLECTION, QUERY);
The first argument, DB.COLLECTION, is a string representing the database and collection names. The second argument, QUERY, is a JSON document that describes the lower boundary shard key at which the split should occur.
Using our sharded cluster model, we first issue the db.collection.getShardDistribution() shell command to get an idea of the current distribution, using world_cities as the collection, as illustrated in the following screenshot:
We can then use sh.status() to review shard-to-zone distribution...