Swiftorial Logo
Home
Swift Lessons
Matchups
CodeSnaps
Tutorials
Career
Resources

Write Concerns in MongoDB

Introduction

In MongoDB, a write concern describes the level of acknowledgment requested from MongoDB for write operations. It is a critical aspect of ensuring data integrity and consistency across distributed systems.

What is Write Concern?

Write concern determines the guarantee that MongoDB provides when confirming the success of a write operation. It can specify whether to wait for acknowledgment from the server and how many nodes must acknowledge the write.

Important Note: By default, MongoDB uses a write concern of "1", which means acknowledgment is received after the write operation is applied to the primary.

Write Concern Levels

MongoDB supports several write concern levels:

  • **0**: No acknowledgment (fire-and-forget).
  • **1**: Acknowledgment from the primary only.
  • **"majority"**: Acknowledgment from the majority of voting nodes.
  • **n**: Acknowledgment from a specified number of nodes.

Setting Write Concern

You can set the write concern for individual operations or for the entire database.

Example: Setting Write Concern for a Single Operation


db.collection.insertOne(
    { name: "Alice" },
    { writeConcern: { w: "majority", wtimeout: 5000 } }
);
            

Example: Setting Default Write Concern for a Database


db.runCommand(
    { 
        "setDefaultRWConcern": 1, 
        "defaultWriteConcern": { w: "majority" } 
    }
);
            

Best Practices

  • Always consider the trade-offs between performance and data safety.
  • Use "majority" write concern for critical data to ensure durability.
  • Test the impact of different write concerns on your application's performance.
  • Monitor your MongoDB deployment to ensure that write concerns are being met.

FAQ

What happens if a write concern is not met?

If a write concern is not met, the operation may fail, and an error will be returned. It's essential to handle these errors appropriately in your application.

Can I set different write concerns for different collections?

Yes, you can set different write concerns for each collection or even for individual write operations within the same collection.

What is the default write concern in MongoDB?

The default write concern is "1", which means acknowledgment is required from the primary node only.