Introduction
Read concern and write concern help control how data is read and saved safely during transactions.
session.startTransaction({ readConcern: { level: "level" }, writeConcern: { w: number, wtimeout: milliseconds } })session.startTransaction({ readConcern: { level: "majority" }, writeConcern: { w: "majority", wtimeout: 5000 } })session.startTransaction({ readConcern: { level: "local" }, writeConcern: { w: 1 } })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();
readConcern control in a MongoDB transaction?writeConcern in a MongoDB transaction?w to specify acknowledgement level, e.g., 'majority'.writeConcern: { w: 'majority' }. Others misuse keys or mix readConcern and writeConcern.const session = client.startSession();
session.startTransaction({ readConcern: { level: 'snapshot' }, writeConcern: { w: 'majority' } });
// transaction operations
await session.commitTransaction();readConcern: { level: 'snapshot' }.const session = client.startSession();
session.startTransaction({ readConcern: { level: 'majority' }, writeConcern: { w: 1 } });
// transaction operations
await session.commitTransaction();session.endSession() after commitTransaction(). This is necessary to properly release session resources and avoid leaks.{ w: 1 } is valid (acknowledgement from primary); syntax is correct.Pass the test and this pattern moves unknown