Bird
Raised Fist0
MongoDBquery~20 mins

Write concern and data durability in MongoDB - Practice Problems & Coding Challenges

Choose your learning style10 modes available
Challenge - 5 Problems
🎖️
Write Concern Mastery
Get all challenges correct to earn this badge!
Test your skills under time pressure!
🧠 Conceptual
intermediate
2:00remaining
Understanding Write Concern Levels

Which write concern level ensures that the write operation is acknowledged by the primary and at least one secondary replica before returning success?

A"w: 2" (Acknowledgment from primary and at least one secondary)
B"w: 1" (Acknowledgment from primary only)
C"w: 0" (No acknowledgment required)
D"w: majority" (Acknowledgment from majority of replica set members)
Attempts:
2 left
💡 Hint

Think about how many nodes must confirm the write for durability.

❓ query_result
intermediate
2:00remaining
Result of Write Concern with w:0

What is the result of a MongoDB insert operation with write concern set to { w: 0 }?

MongoDB
db.collection.insertOne({name: "Alice"}, {writeConcern: {w: 0}})
AThe operation returns immediately without any acknowledgment.
BThe operation waits for acknowledgment from the primary node.
CThe operation waits for acknowledgment from all replica set members.
DThe operation throws an error due to invalid write concern.
Attempts:
2 left
💡 Hint

Consider what w: 0 means for acknowledgment.

📝 Syntax
advanced
2:00remaining
Correct Write Concern Syntax for Majority

Which of the following MongoDB write concern options correctly requests acknowledgment from the majority of replica set members?

A{ writeConcern: { w: "majority", j: true } }
B{ writeConcern: { w: majority } }
C{ writeConcern: { w: 'majority' } }
D{ writeConcern: { w: "majority" } }
Attempts:
2 left
💡 Hint

Check the correct way to specify string values in JavaScript objects.

❓ optimization
advanced
2:00remaining
Optimizing Write Concern for Performance and Durability

You want to optimize a MongoDB write operation to balance durability and performance. Which write concern setting is the best choice?

A{ w: 0, j: false }
B{ w: 1, j: true }
C{ w: 1, j: false }
D{ w: "majority", j: true }
Attempts:
2 left
💡 Hint

Consider acknowledgment from primary and journaling for durability.

🔧 Debug
expert
2:00remaining
Diagnosing Write Concern Timeout Error

A MongoDB write operation with { w: 3, wtimeout: 1000 } fails with a write concern timeout error. What is the most likely cause?

AThe write operation syntax is incorrect and causes a timeout.
BThe primary node is down, so no acknowledgment is possible.
CThe replica set has fewer than 3 members available to acknowledge the write.
DThe write concern timeout value is too high, causing delay.
Attempts:
2 left
💡 Hint

Think about how many nodes must confirm the write and the replica set size.

Practice

(1/5)
1. What does the writeConcern option in MongoDB control?
easy
A. How MongoDB confirms that data is saved to the database
B. The format of data stored in MongoDB
C. The speed of data retrieval from MongoDB
D. The size limit of documents in MongoDB

Solution

  1. Step 1: Understand the role of write concern

    Write concern tells MongoDB how to confirm that a write operation is saved and durable.
  2. Step 2: Differentiate from other options

    It does not control data format, retrieval speed, or document size.
  3. Final Answer:

    How MongoDB confirms that data is saved to the database -> Option A
  4. Quick Check:

    Write concern = data save confirmation [OK]
Hint: Write concern = confirmation of data saved [OK]
Common Mistakes:
  • Confusing write concern with data format
  • Thinking it controls read speed
  • Assuming it limits document size
2. Which of the following is the correct way to specify a write concern that waits for acknowledgment from the primary in MongoDB?
easy
A. { writeConcern: { w: -1 } }
B. { writeConcern: { w: 0 } }
C. { writeConcern: { w: 'majority' } }
D. { writeConcern: { w: 1 } }

Solution

  1. Step 1: Recall write concern values

    w:1 means wait for acknowledgment from the primary node only.
  2. Step 2: Check other options

    w:0 means no acknowledgment; w:'majority' waits for majority nodes; w:-1 is invalid.
  3. Final Answer:

    { writeConcern: { w: 1 } } -> Option D
  4. Quick Check:

    w:1 = primary ack wait [OK]
Hint: w:1 waits for primary acknowledgment [OK]
Common Mistakes:
  • Using w:0 which means no acknowledgment
  • Confusing 'majority' with primary only
  • Using invalid negative values
3. Consider this MongoDB insert command with write concern:
db.collection.insertOne({name: 'Alice'}, {writeConcern: {w: 'majority', wtimeout: 5000}})

What happens if the majority of nodes do not acknowledge the write within 5 seconds?
medium
A. The write operation succeeds immediately without waiting
B. The write operation retries indefinitely until acknowledged
C. The write operation fails with a timeout error
D. The write operation ignores the write concern and writes anyway

Solution

  1. Step 1: Understand w:'majority' and wtimeout

    The write waits for majority nodes to confirm within 5000 ms (5 seconds).
  2. Step 2: Outcome if timeout exceeded

    If majority nodes don't respond in time, MongoDB returns a timeout error and the write is considered failed.
  3. Final Answer:

    The write operation fails with a timeout error -> Option C
  4. Quick Check:

    w:'majority' + wtimeout = fail if no timely ack [OK]
Hint: wtimeout limits wait; timeout causes failure [OK]
Common Mistakes:
  • Assuming write succeeds immediately
  • Thinking MongoDB retries forever
  • Ignoring write concern on timeout
4. You wrote this code to insert a document with write concern:
db.collection.insertOne({item: 'book'}, {writeConcern: {w: 2, wtimeout: '3000'}})

But it throws an error. What is the problem?
medium
A. wtimeout must be a number, not a string
B. w:2 is invalid; only 0,1, or 'majority' allowed
C. insertOne does not accept writeConcern option
D. The document field 'item' is not allowed

Solution

  1. Step 1: Check writeConcern syntax

    wtimeout expects a number (milliseconds), not a string.
  2. Step 2: Validate other parts

    w:2 is valid if the replica set has at least 2 nodes; insertOne accepts writeConcern; 'item' field is valid.
  3. Final Answer:

    wtimeout must be a number, not a string -> Option A
  4. Quick Check:

    wtimeout type must be number [OK]
Hint: wtimeout needs number, not quotes [OK]
Common Mistakes:
  • Using string for wtimeout
  • Thinking w:2 is invalid always
  • Assuming insertOne disallows writeConcern
5. You want to ensure that a write is saved to disk on the primary and replicated to at least two secondary nodes before confirming success. Which write concern setting achieves this?
hard
A. { writeConcern: { w: 1, j: true } }
B. { writeConcern: { w: 3, j: true } }
C. { writeConcern: { w: 'majority', j: false } }
D. { writeConcern: { w: 2, j: false } }

Solution

  1. Step 1: Understand w and j options

    w:3 means wait for acknowledgment from primary plus two secondaries (total 3 nodes). j:true means wait for write to be committed to journal (disk) on primary.
  2. Step 2: Check other options

    B waits only for primary with journaling; C waits for majority but no journaling; D waits for 2 nodes but no journaling.
  3. Final Answer:

    { writeConcern: { w: 3, j: true } } -> Option B
  4. Quick Check:

    w:3 + j:true = 3 nodes + disk write [OK]
Hint: w:number = nodes ack; j:true = disk commit [OK]
Common Mistakes:
  • Ignoring journaling for durability
  • Using w:'majority' without knowing node count
  • Assuming w:2 means two secondaries only
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