Bird
Raised Fist0
MongoDBquery~10 mins

Shard key selection importance in MongoDB - Interactive Code Practice

Choose your learning style10 modes available
Practice - 5 Tasks
Answer the questions below
1fill in blank
easy

Complete the code to specify the shard key when sharding a collection.

MongoDB
sh.shardCollection("mydb.users", [1])
Drag options to blanks, or click blank then click option'
A"userId"
B{ userId: 1 }
C{ age: 1 }
D{ location: 1 }
Attempts:
3 left
💡 Hint
Common Mistakes
Using a string instead of a document for the shard key.
Choosing a field that is not suitable as a shard key.
2fill in blank
medium

Complete the code to create an index on the shard key field.

MongoDB
db.users.createIndex({ [1]: 1 })
Drag options to blanks, or click blank then click option'
Aage
Blocation
Cemail
DuserId
Attempts:
3 left
💡 Hint
Common Mistakes
Creating an index on a non-shard key field.
Forgetting to create an index on the shard key.
3fill in blank
hard

Fix the error in the shard key selection to avoid unbalanced data distribution.

MongoDB
sh.shardCollection("mydb.orders", { [1]: 1 })
Drag options to blanks, or click blank then click option'
AcustomerId
BorderDate
Cstatus
DtotalAmount
Attempts:
3 left
💡 Hint
Common Mistakes
Using a field with few distinct values as shard key.
Choosing a field not used in queries.
4fill in blank
hard

Fill both blanks to create a compound shard key for better data distribution.

MongoDB
sh.shardCollection("mydb.logs", { [1]: 1, [2]: 1 })
Drag options to blanks, or click blank then click option'
AuserId
Btimestamp
Cregion
Dstatus
Attempts:
3 left
💡 Hint
Common Mistakes
Choosing fields that do not improve data distribution.
Using only one field when a compound key is better.
5fill in blank
hard

Fill all three blanks to define a shard key and create an index for efficient queries.

MongoDB
sh.shardCollection("mydb.sales", { [1]: 1, [2]: 1 });
db.sales.createIndex({ [3]: 1 })
Drag options to blanks, or click blank then click option'
Aregion
BproductId
DsaleDate
Attempts:
3 left
💡 Hint
Common Mistakes
Using the same field for all blanks.
Not creating an index on a frequently queried field.

Practice

(1/5)
1. Why is choosing a good shard key important in MongoDB?
easy
A. It reduces the number of collections.
B. It increases the size of each document.
C. It helps distribute data evenly across servers.
D. It makes the database schema simpler.

Solution

  1. Step 1: Understand shard key role

    The shard key determines how data is split across multiple servers in a cluster.
  2. Step 2: Importance of even distribution

    A good shard key ensures data is balanced, preventing some servers from being overloaded.
  3. Final Answer:

    It helps distribute data evenly across servers. -> Option C
  4. Quick Check:

    Shard key = data distribution [OK]
Hint: Shard key controls data spread, pick for balance [OK]
Common Mistakes:
  • Thinking shard key changes document size
  • Confusing shard key with schema design
  • Believing shard key reduces collections
2. Which of the following is the correct syntax to create a sharded collection with shard key { userId: 1 } in MongoDB?
easy
A. sh.shardCollection('mydb.users', { userId: 1 })
B. sh.shardCollection('mydb.users', 'userId')
C. sh.shardCollection('mydb.users', { userId: 'asc' })
D. sh.shardCollection('mydb.users', ['userId'])

Solution

  1. Step 1: Review shardCollection syntax

    The correct syntax requires the namespace string and a document specifying the shard key fields with direction (1 or -1).
  2. Step 2: Match correct option

    sh.shardCollection('mydb.users', { userId: 1 }) uses the correct format: database.collection and shard key as document with 1.
  3. Final Answer:

    sh.shardCollection('mydb.users', { userId: 1 }) -> Option A
  4. Quick Check:

    shardCollection needs {field: 1} format [OK]
Hint: Shard key must be a document with field and 1 or -1 [OK]
Common Mistakes:
  • Passing shard key as string instead of document
  • Using array instead of document for shard key
  • Using 'asc' instead of 1 for direction
3. Given a collection sharded on { orderId: 1 }, which query will benefit most from the shard key?
medium
A. db.orders.find({ customerName: 'Alice' })
B. db.orders.find({ total: { $gt: 100 } })
C. db.orders.find({ status: 'shipped' })
D. db.orders.find({ orderId: 12345 })

Solution

  1. Step 1: Understand shard key query targeting

    Queries that include the shard key field can be routed directly to the relevant shard.
  2. Step 2: Identify query with shard key

    Only the query filtering by orderId uses the shard key, so it benefits most.
  3. Final Answer:

    db.orders.find({ orderId: 12345 }) -> Option D
  4. Quick Check:

    Query with shard key = targeted query [OK]
Hint: Queries with shard key filter hit one shard fast [OK]
Common Mistakes:
  • Assuming any query benefits from shard key
  • Confusing shard key with indexed fields
  • Ignoring shard key presence in query
4. You created a shard key on { country: 1 } but notice one shard stores 90% of data. What is the likely problem?
medium
A. The shard key syntax was incorrect.
B. The shard key has low cardinality causing data imbalance.
C. The collection is not sharded properly.
D. The shard key field is missing in documents.

Solution

  1. Step 1: Analyze shard key cardinality

    Shard keys with few unique values (low cardinality) cause uneven data distribution.
  2. Step 2: Identify cause of imbalance

    Country likely has few distinct values, so one shard holds most data.
  3. Final Answer:

    The shard key has low cardinality causing data imbalance. -> Option B
  4. Quick Check:

    Low cardinality shard key = data imbalance [OK]
Hint: Low unique shard keys cause uneven data spread [OK]
Common Mistakes:
  • Blaming syntax without checking data
  • Assuming collection is unsharded
  • Ignoring shard key field presence
5. You want to shard a large user collection. Which shard key choice is best to keep data balanced and queries efficient?
hard
A. Use { userId: 1 } because it has many unique values and is in queries.
B. Use { country: 1 } because it groups users by location.
C. Use { signupDate: 1 } because dates are sequential.
D. Use { status: 1 } because it has few distinct values.

Solution

  1. Step 1: Evaluate shard key uniqueness

    A good shard key has many unique values to distribute data evenly.
  2. Step 2: Match shard key to query patterns

    UserId is unique and commonly used in queries, improving efficiency.
  3. Step 3: Avoid low cardinality keys

    Country and status have few distinct values, causing imbalance; signupDate is sequential, causing chunk hotspots.
  4. Final Answer:

    Use { userId: 1 } because it has many unique values and is in queries. -> Option A
  5. Quick Check:

    High cardinality + query use = best shard key [OK]
Hint: Pick shard key with many unique values and query use [OK]
Common Mistakes:
  • Choosing sequential or low cardinality fields
  • Ignoring query patterns when selecting shard key
  • Assuming grouping fields balance data well
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