Intermediate LevelMongoDB & Mongoose
How do Multi-Document ACID Transactions work in MongoDB 4.0+?
❓ Interview Prompt: Explain Multi-Document ACID Transactions, ClientSessions, snapshot isolation, session.startTransaction(), commitTransaction(), and abortTransaction().
MongoDB 4.0+ supports Multi-Document ACID Transactions across collections and replica sets using ClientSessions:
Transaction Workflow:
1
Start session: 'session = await mongoose.startSession()'.
2
Start transaction: 'session.startTransaction()'.
3
Execute operations passing '{ session }' option.
4
Commit or abort: 'await session.commitTransaction()' or 'abortTransaction()'.
Code Implementation Example
typescript
import mongoose from 'mongoose';
import { AccountModel } from './models/Account';
async function transferFunds(fromId: string, toId: string, amount: number) {
const session = await mongoose.startSession();
session.startTransaction();
try {
await AccountModel.updateOne({ _id: fromId }, { $inc: { balance: -amount } }, { session });
await AccountModel.updateOne({ _id: toId }, { $inc: { balance: amount } }, { session });
await session.commitTransaction();
} catch (error) {
await session.abortTransaction();
throw error;
} finally {
session.endSession();
}
}💡Executing atomic multi-document money transfer inside a Mongoose ACID transaction.
🎯 Interview Key Takeaway
Use Multi-Document ACID Transactions with session.startTransaction() to guarantee All-or-Nothing execution across collections.
#ACID Transactions#Multi-Document#Session#Intermediate
Back to all MongoDB & Mongoose Questions→