Bird
Raised Fist0
MongoDBquery~10 mins

Write concern and data durability 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 set the write concern to acknowledge writes on the primary only.

MongoDB
db.collection.insertOne({name: 'Alice'}, {writeConcern: {w: [1])
Drag options to blanks, or click blank then click option'
A1
B0
Cmajority
Dall
Attempts:
3 left
💡 Hint
Common Mistakes
Using w: 0 causes no acknowledgment and no guarantee of durability.
Using w: majority waits for multiple nodes, not just primary.
2fill in blank
medium

Complete the code to ensure the write is acknowledged by the majority of replica set members.

MongoDB
db.collection.insertOne({score: 100}, {writeConcern: {w: "[1]"}})
Drag options to blanks, or click blank then click option'
A0
B1
Cmajority
D2
Attempts:
3 left
💡 Hint
Common Mistakes
Using w: 1 only waits for primary, not majority.
Using w: 0 means no acknowledgment.
3fill in blank
hard

Fix the error in the write concern option to wait for journaling confirmation.

MongoDB
db.collection.insertOne({item: 'book'}, {writeConcern: {w: 1, j: [1])
Drag options to blanks, or click blank then click option'
Atrue
Bfalse
C0
D1
Attempts:
3 left
💡 Hint
Common Mistakes
Using j: false disables journaling acknowledgment, risking data loss.
Using j: 1 or 0 is invalid; it must be boolean true or false.
4fill in blank
hard

Fill both blanks to set write concern to wait for 2 nodes and enable journaling.

MongoDB
db.collection.insertOne({status: 'active'}, {writeConcern: {w: [1], j: [2])
Drag options to blanks, or click blank then click option'
A2
Btrue
Cfalse
Dmajority
Attempts:
3 left
💡 Hint
Common Mistakes
Using j as a number instead of boolean.
Using w as 'majority' when number 2 is required.
5fill in blank
hard

Fill all three blanks to set write concern with majority, journaling enabled, and a timeout of 5000 ms.

MongoDB
db.collection.insertOne({task: 'backup'}, {writeConcern: {w: "[1]", j: [2], wtimeout: [3])
Drag options to blanks, or click blank then click option'
A1
Btrue
C5000
Dmajority
Attempts:
3 left
💡 Hint
Common Mistakes
Using wtimeout as a boolean or string instead of a number.
Setting j to false disables journaling.

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