A shard is a replica set or a single mongod that
contains a subset of the data for the sharded cluster. Together, the
cluster’s shards hold the entire data set for the cluster.
Typically each shard is a replica set. The replica set provides
redundancy and high availability for the data in each shard.
MongoDB shards data on a per collection basis. You
must access all data in a sharded cluster via the
mongos instances. If you connect directly to a shard,
you will see only its fraction of the cluster’s data. There is no
particular order to the data set on a specific shard. MongoDB does
not guarantee that any two contiguous chunks will reside on a
Every database has a “primary”  shard that
holds all the un-sharded collections in that database.
To change the primary shard for a database, use the
movePrimary command. The process of migrating the primary shard
may take significant time to complete, and you should not access the
collections until it completes.
When you deploy a new sharded cluster with shards that were
previously used as replica sets, all existing databases
continue to reside on their original shard. Databases created
subsequently may reside on any shard in the cluster.
Use the sh.status() method in the mongo shell to
see an overview of the cluster. This reports includes which shard is
primary for the database and the chunk distribution across the
shards. See sh.status() method for more details.