0
0
MongoDBquery~5 mins

Read concern and write concern in transactions in MongoDB

Choose your learning style9 modes available
Introduction
Read concern and write concern help control how data is read and saved safely during transactions.
When you want to make sure you read the most recent data in a transaction.
When you want to ensure your data changes are saved to multiple servers before finishing.
When you want to avoid reading data that might be rolled back later.
When you want to balance speed and safety in your database operations.
When you want to control how strict the database is about data consistency.
Syntax
MongoDB
session.startTransaction({ readConcern: { level: "level" }, writeConcern: { w: number, wtimeout: milliseconds } })
readConcern levels include: 'local', 'majority', 'linearizable', 'snapshot'.
writeConcern 'w' specifies how many servers must confirm the write.
Examples
Starts a transaction that reads data confirmed by most servers and waits up to 5 seconds for writes to be saved by most servers.
MongoDB
session.startTransaction({ readConcern: { level: "majority" }, writeConcern: { w: "majority", wtimeout: 5000 } })
Starts a transaction that reads the latest data on the current server and requires only one server to confirm writes.
MongoDB
session.startTransaction({ readConcern: { level: "local" }, writeConcern: { w: 1 } })
Sample Program
This code starts a transaction with majority read and write concerns, inserts a document, commits the transaction, ends the session, and then finds the inserted document.
MongoDB
const session = db.getMongo().startSession();
session.startTransaction({ readConcern: { level: "majority" }, writeConcern: { w: "majority", wtimeout: 1000 } });
const coll = session.getDatabase("test").myCollection;
coll.insertOne({ item: "apple", qty: 10 });
await session.commitTransaction();
session.endSession();
db.myCollection.find({ item: "apple" }).toArray();
OutputSuccess
Important Notes
Using 'majority' readConcern ensures you read data confirmed by most servers, avoiding reading uncommitted changes.
writeConcern with 'w: majority' waits for most servers to confirm the write, increasing data safety.
Higher read and write concerns can slow down operations but improve data consistency.
Summary
Read concern controls how fresh or confirmed the data you read is during a transaction.
Write concern controls how many servers must confirm your data changes before the transaction commits.
Choosing the right concerns balances speed and data safety.