In range-based sharding (https://docs.mongodb.com/manual/core/ranged-sharding/#ranged-sharding), MongoDB simply uses the direct value of the chosen shard key to determine the shard boundaries. This has a distinct advantage in that application program code can perform read and write operations directly specifying the value of the shard key. This, in turn, allows mongos to perform a targeted operation, resulting in a performance boost. The disadvantage of this strategy is that the onus is on the MongoDB DevOp to wisely choose a shard key, paying close attention to cardinality, frequency, and the rate of change. A bad choice of shard key quickly results in poor performance and the uneven distribution of data among the shards.
In a range-based sharding implementation, because the shard key is known, the application code can include the shard key in its queries. If the shard key is compound (for example, ISO 3 country code plus telephone area dialing code), the query could...