Swiftorial Logo
Home
Swift Lessons
Matchups
CodeSnaps
Tutorials
Career
Resources

Handling Multi-Document Transactions in MongoDB

Introduction

Multi-document transactions in MongoDB allow you to execute a series of operations across multiple documents and collections while maintaining ACID (Atomicity, Consistency, Isolation, Durability) properties. Transactions are particularly useful in applications that require atomic updates to multiple documents or collections.

Setting Up

Ensure you have MongoDB 4.0 or later installed, as transactions are supported starting from version 4.0. Additionally, transactions are only supported in replica sets and sharded clusters.

Using Transactions

To use transactions in MongoDB, follow these steps:

Start a Session

First, start a session:

Example: Starting a Session

from pymongo import MongoClient

client = MongoClient("mongodb://localhost:27017")
session = client.start_session()
            

Start a Transaction

Next, start a transaction within the session:

Example: Starting a Transaction

session.start_transaction()
            

Perform Operations

Perform the desired operations within the transaction:

Example: Performing Operations

collection1 = client.db.collection1
collection2 = client.db.collection2

collection1.insert_one({"name": "Alice"}, session=session)
collection2.insert_one({"name": "Bob"}, session=session)
            

Commit the Transaction

Commit the transaction to apply the operations atomically:

Example: Committing a Transaction

session.commit_transaction()
            

Abort the Transaction

If an error occurs, you can abort the transaction:

Example: Aborting a Transaction

session.abort_transaction()
            

Example: Full Transaction

Here is a complete example of using a transaction in MongoDB:

Example: Full Transaction

try:
    session.start_transaction()
    collection1.insert_one({"name": "Alice"}, session=session)
    collection2.insert_one({"name": "Bob"}, session=session)
    session.commit_transaction()
    print("Transaction committed")
except Exception as e:
    session.abort_transaction()
    print(f"Transaction aborted: {e}")
            

Conclusion

In this tutorial, you have learned how to use multi-document transactions in MongoDB to ensure atomicity across multiple operations. Transactions are a powerful feature for maintaining data consistency in applications that require complex updates.