Explorer
MongoDB

ACID Transactions in MongoDB

ACID Transactions in MongoDB

In MongoDB, single-document writes are always atomic. Starting in version 4.0 (for replica sets) and version 4.2 (for sharded clusters), MongoDB introduced full multi-document distributed ACID transactions using sessions.

Single-Document vs Multi-Document Transactions

Aspect Single-Document Atomicity Multi-Document ACID Transactions
Scope Operations modifying a single document (including embedded arrays/objects) Operations spanning multiple documents, collections, or shards
Mechanism Native atomic write locks at the WiredTiger storage engine level Client sessions using session.startTransaction() and session.commitTransaction()
Performance Overhead Negligible (standard write operation) Higher memory, write-lock contention, and coordination cost
Default Timeout No transaction timeout 60 seconds (enforced by transactionLifetimeLimitSeconds)
Rollback Support Automatic if operation errors during write Explicit abort via session.abortTransaction()

Code Example (Multi-Document Transaction)

CODE
const session = client.startSession();
try {
  session.startTransaction({
    readConcern: { level: 'snapshot' },
    writeConcern: { w: 'majority' }
  });
  await db.accounts.updateOne({ _id: 1 }, { $inc: { balance: -100 } }, { session });
  await db.accounts.updateOne({ _id: 2 }, { $inc: { balance: 100 } }, { session });
  await session.commitTransaction();
} catch (error) {
  await session.abortTransaction();
} finally {
  await session.endSession();
}

Design Takeaway

Leverage embedded documents where possible to achieve atomicity naturally. Reserve multi-document transactions for critical multi-entity operations like financial transfers.

Finished this lesson?

Mark this chapter complete to update your learning streak and unlock the next lesson.