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

MongoDB में कस्टम _id मानों के साथ Upsert: दस्तावेज़ मौजूद न होने पर डालें?


कस्टम _id के साथ insert() का व्यवहार

जब आप मैन्युअल रूप से _id निर्दिष्ट करके insert() (या insertOne()) का उपयोग करते हैं, और वह _id पहले से मौजूद है, तो MongoDB **डुप्लिकेट कुंजी त्रुटि (E11000)** फेंकता है और कुछ भी नहीं डालता। यह स्वचालित रूप से अपडेट नहीं करता।

उदाहरण: कस्टम _id के साथ डालना

> db.customIdDemo.insert({"_id":1,"StudentName":"John"}); 
WriteResult({ "nInserted" : 1 })
> db.customIdDemo.insert({"_id":1,"StudentName":"Carol"}); 
// त्रुटि: E11000 duplicate key error collection: admin.customIdDemo index: _id_ dup key: { : 1.0 }
WriteResult({ "nInserted" : 0, "writeError" : { "code" : 11000, "errmsg" : "E11000 duplicate key error..." } })
> db.customIdDemo.insert({"_id":2,"StudentName":"Carol"}); 
WriteResult({ "nInserted" : 1 })
> db.customIdDemo.insert({"_id":2,"StudentName":"Carol"}); 
// फिर से त्रुटि
> db.customIdDemo.insert({"_id":3,"StudentName":"Chris"}); 
WriteResult({ "nInserted" : 1 })

अंतिम डेटा

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

आउटपुट:


समाधान: Upsert के लिए update() का उपयोग करें

यदि आप "मौजूद होने पर अपडेट करें, अन्यथा डालें" व्यवहार चाहते हैं, तो insert() के बजाय update() के साथ upsert: true का उपयोग करें:

db.customIdDemo.update( 
    { "_id": 1 },           // क्वेरी: _id 1 वाला दस्तावेज़ ढूंढें
    { $set: { "StudentName": "Carol" } }, // अपडेट: नाम सेट करें
    { upsert: true }        // ऑप्शन: न मिलने पर डालें
);

यह मौजूदा _id 1 के लिए नाम "Carol" अपडेट करेगा, या यदि _id 1 मौजूद नहीं है तो {_id:1, StudentName:"Carol"} डालेगा।

  1. - MongoDB डॉक्यूमेंट से विशिष्ट मान फ़िल्टर करें

    विशिष्ट मान फ़िल्टर करने के लिए MongoDB में $filter का उपयोग करें। आइए एक कलेक्शन बनाते हैं: > db.demo751.insertOne( { _id: 101, details: [ { Name: Robert, id:110,Age:21}, { Name: Rae, id:110,Age:22}, {Name: Ralph, id:116,Age:23} ] } ); { acknowledged : true, insertedId : 101 } find() से सभी डॉक

  1. - Java का उपयोग करके MongoDB कलेक्शन में एकाधिक डॉक्यूमेंट्स कैसे इन्सर्ट करें?

    आप MongoDB में मौजूदा कलेक्शन में insertMany() मेथड का उपयोग करके एकाधिक डॉक्यूमेंट्स इन्सर्ट कर सकते हैं। सिंटैक्स db.coll.insert(docArray) जहां, db डेटाबेस है। coll वह कलेक्शन (नाम) है जिसमें आप डॉक्यूमेंट्स इन्सर्ट करना चाहते हैं। docArray वह डॉक्यूमेंट्स की सरणी है जिसे आप इन्सर्ट करना चाहते ह

  1. - Java का उपयोग करके MongoDB कलेक्शन में डॉक्यूमेंट कैसे इन्सर्ट करें?

    आप MongoDB में मौजूदा कलेक्शन में insert() मेथड का उपयोग करके डॉक्यूमेंट इन्सर्ट कर सकते हैं। सिंटैक्स db.coll.insert(doc) जहां, db डेटाबेस है। coll वह कलेक्शन (नाम) है जिसमें आप डॉक्यूमेंट इन्सर्ट करना चाहते हैं। doc वह डॉक्यूमेंट है जिसे आप इन्सर्ट करना चाहते हैं। उदाहरण > use myDatabase() s