पाठ 19 / 23

ट्रांज़ैक्शन एक नज़र में

जब कई writes साथ सफल या विफल होने चाहिए तब sessions के साथ multi-document ACID transactions उपयोग करें।

मल्टी-डॉक्यूमेंट ACID

ट्रांज़ैक्शन कई writes को समूहित करता है, संभवतः कई कलेक्शन में, ताकि वे सब साथ सफल हों या सब वापस हो जाएँ।

सेशन और withTransaction

एक सेशन शुरू करें, फिर operations को withTransaction के अंदर चलाएँ — यह अपने-आप कमिट होता है या त्रुटि पर वापस हो जाता है।

const session = client.startSession();

await session.withTransaction(async () => {
  await accounts.updateOne({ _id: a }, { $inc: { balance: -100 } }, { session });
  await accounts.updateOne({ _id: b }, { $inc: { balance: 100 } }, { session });
});

कम ही उपयोग करें

ट्रांज़ैक्शन तभी उपयोग करें जब कई डॉक्यूमेंट को वाकई साथ सफल या विफल होना ज़रूरी हो — अच्छा स्कीमा डिज़ाइन (एम्बेडिंग) ज़्यादातर मामलों में इनकी ज़रूरत ही नहीं पड़ने देता।