Bird
Raised Fist0
MongoDBquery~20 mins

Hash-based sharding in MongoDB - Practice Problems & Coding Challenges

Choose your learning style10 modes available
Challenge - 5 Problems
🎖️
Hash Sharding Master
Get all challenges correct to earn this badge!
Test your skills under time pressure!
❓ query_result
intermediate
2:00remaining
Effect of Hash-based Sharding on Query Routing

Consider a MongoDB collection sharded by hashing the user_id field. Which statement best describes how queries with a specific user_id value are routed?

AThe query is routed to all shards because hashed keys are distributed randomly.
BThe query is routed only to the shard that contains the hashed <code>user_id</code> value.
CThe query is routed to the primary shard regardless of the <code>user_id</code> value.
DThe query is routed to shards based on the range of <code>user_id</code> values.
Attempts:
2 left
💡 Hint

Think about how hashing distributes data evenly and how MongoDB uses the hash to locate data.

🧠 Conceptual
intermediate
2:00remaining
Why Use Hash-based Sharding?

What is the main advantage of using hash-based sharding in MongoDB compared to range-based sharding?

AIt allows for efficient range queries on the shard key.
BIt stores data in sorted order on each shard.
CIt evenly distributes data and load across all shards regardless of key distribution.
DIt automatically replicates data to all shards.
Attempts:
2 left
💡 Hint

Consider how data distribution affects load balancing.

📝 Syntax
advanced
2:00remaining
Correct Syntax to Enable Hash-based Sharding

Which MongoDB command correctly enables sharding on the users collection using a hashed user_id shard key?

Ash.shardCollection('mydb.users', { user_id: 'hashed' })
Bsh.shardCollection('mydb.users', { user_id: 'hash' })
Csh.shardCollection('mydb.users', { user_id: 'hashedKey' })
Dsh.shardCollection('mydb.users', { user_id: 'hashing' })
Attempts:
2 left
💡 Hint

Check the exact keyword MongoDB expects for hashed shard keys.

❓ optimization
advanced
2:00remaining
Optimizing Query Performance with Hash-based Sharding

You have a MongoDB collection sharded by hashing email. Which practice will improve query performance for lookups by email?

AAvoid indexing the <code>email</code> field to reduce overhead.
BCreate a compound shard key with <code>email</code> and <code>signup_date</code>.
CUse range queries on <code>email</code> to leverage shard key ordering.
DAlways include the <code>email</code> field in queries to enable targeted shard routing.
Attempts:
2 left
💡 Hint

Think about how MongoDB routes queries in hash-based sharding.

🔧 Debug
expert
3:00remaining
Diagnosing Uneven Data Distribution in Hash-based Sharding

A MongoDB collection is sharded by hashing customer_id. However, one shard stores 80% of the data, causing performance issues. What is the most likely cause?

AThe balancer is disabled, preventing data from moving to balance shards.
BThe shard key is not actually hashed, but used as a range shard key by mistake.
CThe hash function is not distributing values evenly due to a small shard key value range.
DThe <code>customer_id</code> values are not unique, causing data duplication on one shard.
Attempts:
2 left
💡 Hint

Consider what controls data movement between shards after initial distribution.

Practice

(1/5)
1.

What is the main purpose of hash-based sharding in MongoDB?

easy
A. To store data in sorted order on each shard
B. To compress data before storing it
C. To replicate data for backup purposes
D. To evenly distribute data across shards using a hash function

Solution

  1. Step 1: Understand hash-based sharding concept

    Hash-based sharding uses a hash function on the shard key to distribute data evenly.
  2. 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.
  3. Final Answer:

    To evenly distribute data across shards using a hash function -> Option D
  4. Quick Check:

    Hash-based sharding = even data distribution [OK]
Hint: Hash-based sharding means even spread by hashing key [OK]
Common Mistakes:
  • Confusing hash-based with range-based sharding
  • Thinking it sorts data on shards
  • Mixing sharding with replication
2.

Which of the following is the correct way to create a hashed shard key on the field userId in MongoDB?

sh.shardCollection("mydb.users", { ??? })
easy
A. { userId: 1 }
B. { userId: "hashed" }
C. { userId: -1 }
D. { userId: true }

Solution

  1. 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.
  2. Step 2: Match options with syntax

    Only { userId: "hashed" } uses the correct syntax: { userId: "hashed" }.
  3. Final Answer:

    { userId: "hashed" } -> Option B
  4. Quick Check:

    Hashed shard key syntax = { field: "hashed" } [OK]
Hint: Hashed keys use string "hashed" in shard key spec [OK]
Common Mistakes:
  • Using 1 or -1 instead of "hashed"
  • Using boolean true instead of string
  • Omitting quotes around hashed
3.

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.

medium
A. Shard 2
B. Cannot determine without full hash map
C. Shard 3
D. Shard 1

Solution

  1. Step 1: Understand hashed shard key routing

    Documents are routed to shards based on the hash of the shard key value.
  2. 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.
  3. Final Answer:

    Shard 2 -> Option A
  4. Quick Check:

    Hash value maps to shard 2 [OK]
Hint: Hash value decides shard, not raw key [OK]
Common Mistakes:
  • Assuming shard based on userId value directly
  • Choosing 'Cannot determine' when info is given
  • Confusing shard ranges with key values
4.

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?

medium
A. The shard key argument must be an object, but a string was passed
B. The shard key value should be 1 or -1, not "hashed"
C. The command syntax is correct; the error is from elsewhere
D. The database name is missing in the command

Solution

  1. Step 1: Check shardCollection syntax

    The shard key must be an object specifying the field and type, e.g., { orderId: "hashed" }.
  2. 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.
  3. Final Answer:

    The shard key argument must be an object, but a string was passed -> Option A
  4. Quick Check:

    Shard key must be an object [OK]
Hint: Shard key must be an object, not a string [OK]
Common Mistakes:
  • Passing shard key as string instead of object
  • Confusing shard key with database name
  • Ignoring error message details
5.

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?

hard
A. The shard key was set to { email: 1 } instead of hashed
B. Hash-based sharding always causes uneven data distribution
C. The email field has many duplicate values causing hash collisions
D. The collection is too small to distribute evenly

Solution

  1. Step 1: Understand hash-based sharding behavior

    Hash-based sharding usually distributes data evenly unless many documents share the same shard key value.
  2. 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.
  3. Final Answer:

    The email field has many duplicate values causing hash collisions -> Option C
  4. Quick Check:

    Duplicate keys cause uneven shard data [OK]
Hint: Duplicates in shard key cause uneven shard sizes [OK]
Common Mistakes:
  • Assuming hash sharding always balances perfectly
  • Confusing range-based with hash-based sharding
  • Ignoring data distribution of shard key values
Recommended

Ready to prove it?

Pass the test and this pattern moves unknown strong while earning +1 Grip toward your certificate.

10 questions~5 mineasy hard