Hash-based sharding in MongoDB - Cheat Sheet & Quick Revision
Practice
What is the main purpose of hash-based sharding in MongoDB?
Solution
Step 1: Understand hash-based sharding concept
Hash-based sharding uses a hash function on the shard key to distribute data evenly.Step 2: Compare options with concept
Only To evenly distribute data across shards using a hash function describes even distribution using hashing, which matches the concept.Final Answer:
To evenly distribute data across shards using a hash function -> Option DQuick Check:
Hash-based sharding = even data distribution [OK]
- Confusing hash-based with range-based sharding
- Thinking it sorts data on shards
- Mixing sharding with replication
Which of the following is the correct way to create a hashed shard key on the field userId in MongoDB?
sh.shardCollection("mydb.users", { ??? })Solution
Step 1: Recall syntax for hashed shard key
MongoDB requires the shard key field to be set to "hashed" as a string to enable hash-based sharding.Step 2: Match options with syntax
Only { userId: "hashed" } uses the correct syntax: { userId: "hashed" }.Final Answer:
{ userId: "hashed" } -> Option BQuick Check:
Hashed shard key syntax = { field: "hashed" } [OK]
- Using 1 or -1 instead of "hashed"
- Using boolean true instead of string
- Omitting quotes around hashed
Given a collection sharded by { userId: "hashed" }, which shard will store the document { userId: 42, name: "Alice" }?
Assume the hash function maps 42 to a hash value that falls into shard 2's range.
Solution
Step 1: Understand hashed shard key routing
Documents are routed to shards based on the hash of the shard key value.Step 2: Use given hash mapping
The problem states the hash of 42 falls into shard 2's range, so the document goes to shard 2.Final Answer:
Shard 2 -> Option AQuick Check:
Hash value maps to shard 2 [OK]
- Assuming shard based on userId value directly
- Choosing 'Cannot determine' when info is given
- Confusing shard ranges with key values
Consider this command to shard a collection:
sh.shardCollection("mydb.orders", "orderId: hashed")After running this, you get an error: "Error: shard key must be an object". What is the likely cause?
Solution
Step 1: Check shardCollection syntax
The shard key must be an object specifying the field and type, e.g., { orderId: "hashed" }.Step 2: Identify error cause
The error says shard key must be an object, so likely the argument passed was not an object but a string or other type.Final Answer:
The shard key argument must be an object, but a string was passed -> Option AQuick Check:
Shard key must be an object [OK]
- Passing shard key as string instead of object
- Confusing shard key with database name
- Ignoring error message details
You want to shard a collection by email using hash-based sharding. However, you notice some shards have much more data than others. What could be a reason for this uneven distribution?
Solution
Step 1: Understand hash-based sharding behavior
Hash-based sharding usually distributes data evenly unless many documents share the same shard key value.Step 2: Analyze cause of uneven data
If many documents have the same email, their hash is the same, so they go to the same shard, causing imbalance.Final Answer:
The email field has many duplicate values causing hash collisions -> Option CQuick Check:
Duplicate keys cause uneven shard data [OK]
- Assuming hash sharding always balances perfectly
- Confusing range-based with hash-based sharding
- Ignoring data distribution of shard key values
Ready to prove it?
Pass the test and this pattern moves unknown
