How to Use MongoDB Transactions & Rollbacks

Transaction কী?
Transaction এর মাধ্যমে একাধিক ডাটাবেইস অপারেশন একসাথে execute হয়, এবং সবগুলো সফল হলে তবেই ডাটাবেজে স্থায়ীভাবে save হয়।
যদি কোনো একটি অপারেশন fail করে, তাহলে সবকিছু rollback হয়ে যায় — অর্থাৎ, কোনো ডেটা চেঞ্জই হয় না।
উদাহরণ: ধরো তুমি একজন ইউজারকে create করছো এবং তার account-এর জন্য একটা balance সেট করছো। ইউজার তৈরি হলেও যদি balance সেট করতে গিয়ে error হয়, তাহলে পুরো process টা undo হয়ে যাবে — যাতে inconsistent ডেটা না থাকে।
Rollback কী?
Rollback মানে হল পূর্ববর্তী অবস্থায় ফিরে যাওয়া। অর্থাৎ, যদি transaction-এর মাঝখানে কোনো সমস্যা হয়, তাহলে আগের যেই সব কাজ হয়েছিল, সেগুলোকেও undo করে ফেলা হয়।
✅ Mongoose-এ Transaction কিভাবে কাজ করে?
Mongoose/MongoDB-তে transaction ব্যবহার করতে হলে session
শুরু করতে হয়।
const mongoose = require('mongoose');
const runTransaction = async () => {
const session = await mongoose.startSession(); // Session শুরু
session.startTransaction(); // Transaction শুরু
try {
// প্রথম কাজ: ইউজার তৈরি
const user = await User.create([{ name: 'Zaki' }], { session });
// দ্বিতীয় কাজ: অ্যাকাউন্ট তৈরি
const account = await Account.create([{ userId: user[0]._id, balance: 1000 }], { session });
await session.commitTransaction(); // সবকিছু ঠিকঠাক হলে save করে ফেলে
console.log('Transaction committed successfully.');
} catch (error) {
await session.abortTransaction(); // সমস্যা হলে rollback করে
console.error('Transaction failed and rolled back:', error.message);
} finally {
session.endSession(); // Session শেষ
}
};
runTransaction();
Subscribe to my newsletter
Read articles from Ashik Bhuyan directly inside your inbox. Subscribe to the newsletter, and don't miss out.
Written by

Ashik Bhuyan
Ashik Bhuyan
A forward-thinking software engineer. who can work as a web developer in dynamic environments. Strong knowledge of MERN Stack with vast experience in building Web Applications, using React.js, Next.js, and Redux for the client side, Node.js/Express for the server side, and MongoDB, SQL Server for the database.