تخطَّ إلى المحتوى

🍃 شرح MongoDB

المعاملات (Transactions)

الدرس 22 من 25· ⏱ 1 دقائق قراءة

لماذا المعاملات؟

أحيانًا يجب أن تنجح عدّة عمليات معًا أو تفشل معًا — مثل تحويل رصيد بين حسابين.

المثال الكلاسيكي

const session = await mongoose.startSession();
session.startTransaction();

try {
  await Account.updateOne(
    { _id: from }, { $inc: { balance: -100 } }, { session }
  );
  await Account.updateOne(
    { _id: to }, { $inc: { balance: 100 } }, { session }
  );

  await session.commitTransaction();   // نجاح: ثبّت الكل
} catch (err) {
  await session.abortTransaction();    // فشل: تراجع عن الكل
} finally {
  session.endSession();
}

متى تستخدمها؟

  • التحويلات المالية.
  • العمليات التي تحدّث عدّة مجموعات ويجب أن تبقى متّسقة.

⚠️ المعاملات تتطلّب نشرًا بنمط Replica Set (متوفّر افتراضيًّا في Atlas). للبيانات المرتبطة بشدّة، التضمين أحيانًا يغني عن الحاجة للمعاملات.

🎯 التالي: Atlas والسحابة.

هل كان هذا الدرس مفيدًا؟