MongoDB — Multi-Document ACID Transactions
Implement multi-document transactions using database sessions for atomic write safety.
1Executing a Transaction with Sessions
ACID Transaction Example
const session = await mongoose.startSession();
session.startTransaction();
try {
await Account.updateOne({ _id: fromAcc }, { $inc: { balance: -100 } }, { session });
await Account.updateOne({ _id: toAcc }, { $inc: { balance: 100 } }, { session });
await session.commitTransaction();
console.log("Transaction committed!");
} catch (err) {
await session.abortTransaction();
console.error("Transaction aborted due to error:", err);
} finally {
session.endSession();
}