QA
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→

More MongoDB & Mongoose Interview Questions

Beginner LevelMongoDB & Mongoose

How does the MongoDB Aggregation Pipeline work? Explain $match, $group, $lookup, and $project.

Beginner LevelMongoDB & Mongoose

What is MongoDB and how does the BSON document data model work?

Beginner LevelMongoDB & Mongoose

What is the structure of a MongoDB ObjectId and how is it generated?