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

MongoDB में सशर्त अपसर्ट या अपडेट कैसे करें?


$max ऑपरेटर का उपयोग करना

किसी फ़ील्ड को केवल तभी अपडेट करने के लिए जब नया मान वर्तमान मान से बड़ा हो, $max ऑपरेटर का उपयोग करें। यह सशर्त अपडेट/अपसर्ट लागू करता है।

उदाहरण: नमूना डेटा

> db.conditionalUpdatesDemo.insertOne({"_id":100,"StudentFirstScore":89,"StudentSecondScore":78,"BiggestScore":89}); 
{ "acknowledged" : true, "insertedId" : 100 }
> db.conditionalUpdatesDemo.insertOne({"_id":101,"StudentFirstScore":305,"StudentSecondScore":560,"BiggestScore":1050}); 
{ "acknowledged" : true, "insertedId" : 101 }
> db.conditionalUpdatesDemo.insertOne({"_id":103,"StudentFirstScore":560,"StudentSecondScore":789,"BiggestScore":880}); 
{ "acknowledged" : true, "insertedId" : 103 }

सशर्त अपडेट: _id 100 के लिए BiggestScore को 150 पर सेट करें (केवल यदि 150 > वर्तमान मान)

> db.conditionalUpdatesDemo.update( 
    { _id: 100 }, 
    { $max: { "BiggestScore": 150 } } 
); 
WriteResult({ "nMatched" : 1, "nUpserted" : 0, "nModified" : 1 })

सत्यापन

> db.conditionalUpdatesDemo.find().pretty();

आउटपुट: _id 100 का BiggestScore 89 से 150 हो गया (क्योंकि 150 > 89)। _id 101 का BiggestScore 1050 अपरिवर्तित (क्योंकि 150 < 1050, लेकिन यह क्वेरी में नहीं था)।

मुख्य बिंदु:

  • $max फ़ील्ड को केवल तभी अपडेट करता है जब निर्दिष्ट मान मौजूदा मान से **अधिक** हो।
  • $min इसके विपरीत करता है (केवल यदि नया मान **कम** हो)।
  • अपसर्ट के साथ संयोजन: { upsert: true } जोड़ने पर, यदि दस्तावेज़ मौजूद नहीं है, तो यह निर्दिष्ट मान के साथ बनाया जाता है।
  • यह रेस कंडीशन से बचने के लिए परमाणु है (उदाहरण: हाई स्कोर ट्रैकिंग)।
  1. - MongoDB में Bulk Operations से Multiple Updates और Array Elements Update करना

    इसके लिए initializeOrderedBulkOp() का उपयोग करें। यह collection के लिए new Bulk() operations builder initialize और return करता है। Builder write operations की ordered list construct करता है जो MongoDB bulk में execute करता है। Collection बनाना >db.demo550.insertOne({Name:Chris,details:[{Marks:49

  1. - MongoDB में एकाधिक एटॉमिक अपडेट कैसे करें?

    एकाधिक एटॉमिक अपडेट के लिए update() के साथ $set का उपयोग करें। आइए एक कलेक्शन बनाते हैं: > db.demo699.insertOne({Name:Chris Brown}); { acknowledged : true, insertedId : ObjectId(5ea6e370551299a9f98c93a7) } > db.demo699.insertOne({Name:David Miller}); { acknowledged : true, insertedId : Object

  1. - MySQL में कंडीशनल GROUP BY से मैक्सिमम वैल्यू कैसे प्राप्त करें?

    GROUP BY और MAX() से कंडीशनल ग्रुपिंग डुप्लीकेट नाम वाले रिकॉर्ड्स में से प्रत्येक नाम की अधिकतम (मैक्सिमम) वैल्यू प्राप्त करने के लिए GROUP BY के साथ MAX() एग्रीगेट फंक्शन का उपयोग करें। टेबल बनाना और डेटा इन्सर्ट करना CREATE TABLE DemoTable ( StudentName VARCHAR(40), StudentMarks INT );