Computer >> कंप्यूटर ट्यूटोरियल >  >> प्रोग्रामिंग >> MongoDB

MongoDB में ट्रांजैक्शन लॉक

MongoDB 4.0 में ट्रांजैक्शन सपोर्ट और findOneAndUpdate() का उपयोग

MongoDB 4.0 से पहले मल्टी-डॉक्यूमेंट ACID ट्रांजैक्शन सपोर्ट नहीं करता था। लॉक-जैसे व्यवहार के लिए findOneAndUpdate() का उपयोग करके एटॉमिक रीड-एंड-अपडेट ऑपरेशन किया जा सकता है।

उदाहरण: संग्रह और दस्तावेज़ बनाना

> db.demo404.insertOne({"FirstName":"John"});
{ "acknowledged" : true, "insertedId" : ObjectId("5e6f8c38fac4d418a0178592") }
> db.demo404.insertOne({"FirstName":"Robert"});
{ "acknowledged" : true, "insertedId" : ObjectId("5e6f8c3cfac4d418a0178593") }
> db.demo404.insertOne({"FirstName":"Mike"});
{ "acknowledged" : true, "insertedId" : ObjectId("5e6f8c40fac4d418a0178594") }

सभी दस्तावेज़ देखना

> db.demo404.find();

आउटपुट:

{ "_id" : ObjectId("5e6f8c38fac4d418a0178592"), "FirstName" : "John" }
{ "_id" : ObjectId("5e6f8c3cfac4d418a0178593"), "FirstName" : "Robert" }
{ "_id" : ObjectId("5e6f8c40fac4d418a0178594"), "FirstName" : "Mike" }

findOneAndUpdate() के साथ लॉक-जैसा व्यवहार

> result=db.demo404.findOneAndUpdate(
  {"in_transaction": {"$exists": false}},
  {"$set": {"in_transaction": true}}
);

आउटपुट:

{ "_id" : ObjectId("5e6f8c38fac4d418a0178592"), "FirstName" : "John" }

व्याख्या:

  • {"in_transaction": {"$exists": false}} - ऐसा दस्तावेज़ खोजें जिसमें in_transaction फील्ड न हो
  • {$set: {"in_transaction": true}} - उस फील्ड को true सेट करें (लॉक प्राप्त करना)
  • ऑपरेशन एटॉमिक है - कोई अन्य ऑपरेशन बीच में हस्तक्षेप नहीं कर सकता
  • मूल दस्तावेज़ लौटाता है (अपडेट से पहले)

महत्वपूर्ण नोट:

  • यह सिंगल-डॉक्यूमेंट एटॉमिसिटी है, मल्टी-डॉक्यूमेंट ट्रांजैक्शन नहीं
  • MongoDB 4.0+ में मल्टी-डॉक्यूमेंट ट्रांजैक्शन सपोर्ट करता है (रिप्लिका सेट के लिए)
  • MongoDB 4.2+ में शार्डेड क्लस्टर पर भी ट्रांजैक्शन सपोर्ट

आधुनिक ट्रांजैक्शन सिंटैक्स (MongoDB 4.0+):

const session = db.getMongo().startSession();
session.startTransaction();
try {
  db.collection1.insertOne({...}, {session});
  db.collection2.updateOne({...}, {session});
  session.commitTransaction();
} catch (e) {
  session.abortTransaction();
} finally {
  session.endSession();
}
  1. - MongoDB में _id फील्ड छिपाएं

    आइए दस्तावेजों के साथ एक कलेक्शन बनाते हैं: > db.demo575.insertOne({id:101,Information:{Name:Chris,Age:21}}); { acknowledged : true, insertedId : ObjectId(5e916a55581e9acd78b427f7) } > db.demo575.insertOne({id:102,Information:{Name:David,Age:20}}); { acknowledged : true, insertedId : ObjectId

  1. - MongoDB में मास इंसर्शन (थोक सम्मिलन)

    मास इंसर्शन के लिए MongoDB में insertMany() की अवधारणा का उपयोग करें। insertMany() एक कलेक्शन में कई डॉक्यूमेंट्स डालता है। आइए डॉक्यूमेंट्स के साथ एक कलेक्शन बनाते हैं: > db.demo729.insertMany( [ ... { BankName:HDFC Bank,cardType:Credit,CustomerName:[{Name:Chris,Age:25}]}, ... { BankName:ICICI

  1. - C# में इंटरफेस

    इंटरफेस गुण, मेथड्स और इवेंट्स को परिभाषित करते हैं, जो इंटरफेस के मेंबर्स होते हैं। इंटरफेस में केवल मेंबर्स की घोषणा होती है। डेराइविंग क्लास की जिम्मेदारी होती है कि वह मेंबर्स को परिभाषित करे। यह अक्सर एक मानक संरचना प्रदान करने में मदद करता है जिसका डेराइविंग क्लासेस पालन करेंगी।आइए देखें कि C#