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

MongoDB में सरणी में एकाधिक तत्व कैसे अपडेट करें?

MongoDB में (संस्करण 3.6+) सरणी के सभी तत्वों को अपडेट करने के लिए, ऑल स्थितीय ऑपरेटर $[] का उपयोग करें। यह फिल्टर से मेल खाने वाले दस्तावेज़ में निर्दिष्ट सरणी के हर तत्व पर अपडेट लागू करता है।

उदाहरण: सर्वर लॉग सरणी वाला दस्तावेज़

> db.demo385.insertOne({
    "ServerLogs": [
        { "status": "InActive" },
        { "status": "InActive" },
        { "status": "InActive" }
    ]
});
{ "acknowledged" : true, "insertedId" : ObjectId("5e5b6a7522064be7ab44e7f5") }

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

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

आउटपुट: तीन "InActive" तत्व वाली सरणी।

अपडेट: सभी तत्वों के status को "Active" पर सेट करें

> db.demo385.update(
    { "_id" : ObjectId("5e5b6a7522064be7ab44e7f5") },
    { $set: { "ServerLogs.$[].status": "Active" } }
);
WriteResult({ "nMatched" : 1, "nUpserted" : 0, "nModified" : 1 })

परिणाम जांचें

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

आउटपुट: सभी तीन तत्व अब status: "Active" दिखाते हैं।

व्याख्या

  • $[] (ऑल स्थितीय ऑपरेटर) सरणी में प्रत्येक तत्व के लिए अपडेट को इंगित करता है।
  • $set प्रत्येक तत्व पर status फील्ड सेट करता है।
  • कोई फिल्टर शर्त आवश्यक नहीं; दस्तावेज़ फिल्टर (_id) दस्तावेज़ का चयन करता है।

शर्त के साथ अपडेट (arrayFilters)

केवल कुछ तत्वों को अपडेट करने के लिए, arrayFilters के साथ फ़िल्टर्ड स्थितीय ऑपरेटर $[identifier] का उपयोग करें:

> db.demo385.update(
    { "_id": ObjectId("5e5b6a7522064be7ab44e7f5") },
    { $set: { "ServerLogs.$[elem].status": "Active" } },
    { arrayFilters: [ { "elem.status": "InActive" } ] }
);

स्थितीय ऑपरेटर्स की तुलना

ऑपरेटरलक्ष्य
$पहला मिलान वाला तत्व (फिल्टर से)।
$[]सभी तत्व (कोई फिल्टर नहीं)।
$[identifier]arrayFilters से मेल खाने वाले तत्व।

नोट

$[] के लिए MongoDB 3.6+ आवश्यक। विरासत update() के बजाय updateOne/updateMany पसंद करें।

  1. - MongoDB क्वेरी: इंडेक्स N पर ऐरे ऑब्जेक्ट अपडेट करें

    MongoDB में ऐरे ऑब्जेक्ट अपडेट करने के लिए update() का उपयोग करें। डॉट नोटेशन का उपयोग भी आवश्यक है। आइए दस्तावेज़ों के साथ एक संग्रह बनाएं: > db.demo489.insertOne( ... { ... ... ...    details : [{ ...       id : 101, ...       "Info1" : { ... &

  1. - MongoDB में ऐरे के अंदर एलिमेंट्स कैसे अपडेट करें?

    ऐरे के अंदर एलिमेंट्स अपडेट करने के लिए MongoDB में $set का उपयोग करें। नमूना डेटा बनाना (CollegeDetails ऐरे) db.demo494.insertOne( { CollegeDetails : [ { CollegeName : MIT, Fees : 80000 }, { CollegeName : SU, Fees : 90000 } ] } ) अपडेट से पहले दस्तावेज़ देखना db.demo494.find().prett

  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