# Shard an existing collection
Do this during a maintenance window or low-traffic period. The initial chunking scans the collection.
## Steps
1. `sh.enableSharding("mydb")` in mongosh against the cluster (needs the sharding privilege; the `atlasAdmin` role has it).
2. Create the supporting index on the shard key first if one does not exist; `shardCollection` needs it.
3. `sh.shardCollection("mydb.orders", { customerId: "hashed" })`. For an empty collection, pass `numInitialChunks` to pre-split so the balancer does not start from one chunk.
4. For a populated collection, MongoDB splits based on existing data. Watch `sh.status()` while the balancer distributes chunks.
5. Verify with `db.orders.getShardDistribution()`: data and chunks spread across shards, no single shard holding everything.
## Rules
- Every document needs the shard key field. Missing key fields route to the same chunk and unbalance you from day one.
- Unique indexes on a sharded collection must include the shard key (or be the `_id` index with the key). Plan for this before you shard.
- Do not shard tiny collections. The overhead is not worth it; shard when a single replica set is actually the bottleneck.
## Verify
`getShardDistribution()` shows even spread, the balancer is idle when done, and targeted queries (including the shard key) hit one shard while scatter-gather queries are the exception.