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

MongoDB में मान अद्वितीय होने पर ही डालें अन्यथा अपडेट करें (Upsert)


Upsert ऑप्शन का उपयोग करना

upsert: true ऑप्शन के साथ update() (या updateOne()/updateMany()) का उपयोग करने से: यदि दस्तावेज़ मौजूद है तो अपडेट होता है, अन्यथा नया दस्तावेज़ डाला जाता है।

उदाहरण: प्रारंभिक डेटा

> db.onlyInsertIfValueIsUniqueDemo.insertOne({"StudentName":"Larry","StudentAge":22}); 
{ "acknowledged" : true, "insertedId" : ObjectId("5c9a633815e86fd1496b38a4") }
> db.onlyInsertIfValueIsUniqueDemo.insertOne({"StudentName":"Mike","StudentAge":21}); 
{ "acknowledged" : true, "insertedId" : ObjectId("5c9a634a15e86fd1496b38a5") }
> db.onlyInsertIfValueIsUniqueDemo.insertOne({"StudentName":"Sam","StudentAge":24}); 
{ "acknowledged" : true, "insertedId" : ObjectId("5c9a635015e86fd1496b38a6") }

केस 1: मौजूदा मान अपडेट करना (Mike की उम्र 27 करना)

> db.onlyInsertIfValueIsUniqueDemo.update( 
    {StudentName: "Mike"}, 
    {$set: {"StudentAge": 27}}, 
    {upsert: true} 
); 
WriteResult({ "nMatched" : 1, "nUpserted" : 0, "nModified" : 1 })

मौजूदा दस्तावेज़ अपडेट होता है (nUpserted: 0, nModified: 1)।

केस 2: नया अद्वितीय मान डालना (David जोड़ना)

> db.onlyInsertIfValueIsUniqueDemo.update( 
    {StudentName: "David"}, 
    {$set: {"StudentAge": 25}}, 
    {upsert: true} 
); 
WriteResult({ "nMatched" : 0, "nUpserted" : 1, "nModified" : 0, "_id" : ObjectId("...") })

नया दस्तावेज़ डाला जाता है (nUpserted: 1, नया _id उत्पन्न)।

अंतिम डेटा देखना

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

सभी चार दस्तावेज़ दिखाता है जिनमें Mike की उम्र अपडेटेड और David नया है।

महत्वपूर्ण: Upsert के लिए क्वेरी फ़ील्ड (यहां StudentName) पर यूनिक इंडेक्स होने की सिफारिश की जाती है ताकि रेस कंडीशन में डुप्लिकेट न बने। updateOne() के साथ upsert: true आधुनिक पसंदीदा सिंटैक्स है।

  1. - MongoDB Query - केवल Specific Field Value Update करना

    आइए उदाहरण देखते हैं और documents के साथ collection बनाते हैं: Collection बनाना > db.demo557.insertOne({Name:Chris}); { acknowledged : true, insertedId : ObjectId(5e8f28e954b4472ed3e8e864) } > db.demo557.insertOne({Name:David}); { acknowledged : true, insertedId : ObjectId(5e8f28ee54b4472ed3e

  1. - MongoDB डॉक्यूमेंट में केवल एक मान को इंक्रीमेंट कैसे करें?

    MongoDB में केवल एक मान को अपडेट और इंक्रीमेंट करने के लिए update() के साथ $inc का उपयोग करें। आइए एक कलेक्शन बनाते हैं: > db.demo698.insertOne({Score:78}); { acknowledged : true, insertedId : ObjectId(5ea6d8a4551299a9f98c9398) } > db.demo698.insertOne({Score:56}); { acknowledged : true, inse

  1. - MySQL में केवल एक कॉलम मान को कैसे अपडेट करें?

    MySQL में UPDATE स्टेटमेंट का उपयोग करके किसी विशिष्ट शर्त के आधार पर केवल एक कॉलम का मान बदला जा सकता है, जबकि अन्य कॉलम अपरिवर्तित रहते हैं। सिंटैक्स UPDATE table_name SET column_name = new_value WHERE condition; उदाहरण छात्र तालिका बनाएं: mysql> CREATE TABLE DemoTable ( -> StudentId