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

MongoDB में JSON सूची के अंदर कुंजी के मान को कैसे अपडेट करें?


क्लाइंट-साइड संशोधन और पुनः सहेजना

MongoDB सरणी के अंदर नेस्टेड ऑब्जेक्ट के फ़ील्ड को सीधे आंशिक रूप से अपडेट करने का समर्थन नहीं करता (स्थितीय ऑपरेटर $ केवल शीर्ष-स्तरीय सरणी तत्वों के लिए काम करता है)। समाधान: दस्तावेज़ लाएं, जावास्क्रिप्ट में संशोधित करें, फिर पूरे सरणी को $set के साथ सहेजें।

उदाहरण: नेस्टेड ऑब्जेक्ट्स की सरणी के साथ दस्तावेज़

> db.updateListOfKeyValuesDemo.insertOne( 
    { 
        "StudentDetails": [ 
            { "StudentName": "John", "StudentAge": 23, "StudentCountryName": "US" }, 
            { "StudentName": "Carol", "StudentAge": 24, "StudentCountryName": "UK" }, 
            { "StudentName": "Bob", "StudentAge": 22, "StudentCountryName": "AUS" } 
        ] 
    } 
); 
{ "acknowledged" : true, "insertedId" : ObjectId("5c9b5b759882024390176545") }

अपडेट लॉजिक (शेल स्क्रिप्ट)

> var documentFromCollection = db.updateListOfKeyValuesDemo.findOne({ 
    "_id": ObjectId("5c9b5b759882024390176545") 
}); 
> documentFromCollection.StudentDetails.forEach(function(updateStudent) { 
    updateStudent.StudentName = "Ramit"; 
}); 
> db.updateListOfKeyValuesDemo.update( 
    { "_id": documentFromCollection._id }, 
    { "$set": { "StudentDetails": documentFromCollection.StudentDetails } } 
); 
WriteResult({ "nMatched" : 1, "nUpserted" : 0, "nModified" : 1 })

सत्यापन

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

आउटपुट: StudentDetails सरणी के सभी तीन ऑब्जेक्ट्स में StudentName अब "Ramit" है।

सीमाएं और विकल्प:

  • यह दृष्टिकोण पूरे सरणी को फिर से लिखता है (बड़े सरणी के लिए अक्षम)।
  • MongoDB 3.6+ में arrayFilters के साथ $[] फ़िल्टर्ड स्थितीय ऑपरेटर का उपयोग करके विशिष्ट नेस्टेड फ़ील्ड को सीधे अपडेट कर सकते हैं।
  • उदाहरण: db.coll.update({}, { $set: { "StudentDetails.$[elem].StudentName": "Ramit" } }, { arrayFilters: [ { "elem.StudentAge": { $gte: 22 } } ] })।
  1. - Python में डिक्शनरी में कुंजी का मान कैसे अपडेट करें?

    Python डिक्शनरी ऑब्जेक्ट कुंजी:मान जोड़ियों का एक अनक्रमित संग्रह है। डिक्शनरी ऑब्जेक्ट `d` में, किसी भी कुंजी से जुड़ा मान `d[k]` द्वारा प्राप्त किया जा सकता है। >>> d = {one: 1, two: 2, three: 3, four: 4} >>> d[two] 2 असाइनमेंट `d[k] = v` डिक्शनरी ऑब्जेक्ट को अपडेट करेगा। यदि एक

  1. - Python लिस्ट एलिमेंट मान कैसे अपडेट करें?

    Python लिस्ट ऑब्जेक्ट म्यूटेबल है। इसलिए लिस्ट ऑब्जेक्ट को अपडेट करना संभव है। लिस्ट अपडेट करने के लिए, उसके एक्सेस का उपयोग करके किसी भी आइटम को नया मान असाइन करें। उदाहरण के लिए, यदि आप 5वें आइटम (इंडेक्स 0 से गिनती) को उसके पहले के मान का दोगुना करना चाहते हैं: >>> L1 = [10, 50, 20, 9,

  1. - Python टपल एलिमेंट मान कैसे अपडेट करें?

    Python टपल एक इम्यूटेबल ऑब्जेक्ट है। इसलिए इसे अपडेट करने का प्रयास करने वाला कोई भी ऑपरेशन अनुमति नहीं है। हालांकि, निम्न वर्कअराउंड का उपयोग किया जा सकता है। पहले, बिल्ट-इन फंक्शन `list()` द्वारा टपल को लिस्ट में बदलें। आप लिस्ट ऑब्जेक्ट में किसी आइटम को निश्चित इंडेक्स पर नया मान असाइन करके हमेश