Multi-Document ACID Transactions
MongoDB supports multi-document transactions inside Replica Sets, enabling standard ACID validation patterns across multiple collections.
1 Running Transactions in Node.js
JavaScript — Session Transaction block
const session = await mongoose.startSession();
session.startTransaction();
try {
# Deduct user balance
await Account.updateOne({ _id: user1 }, { $inc: { balance: -100 } }, { session });
# Add payee balance
await Account.updateOne({ _id: user2 }, { $inc: { balance: 100 } }, { session });
await session.commitTransaction();
} catch (error) {
await session.abortTransaction();
} finally {
session.endSession();
}
2 Code Challenge
Challenge: Write a transaction script representing order completion: inserting a record into an orders collection, and updating product stock in product collection atomically.