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

MongoDB में सबडॉक्यूमेंट्स को कैसे मैनिपुलेट करें?

MongoDB में नेस्टेड सरणी के अंदर सबडॉक्यूमेंट फील्ड्स को अपडेट करने के लिए, फिल्टर और अपडेट पथ दोनों में डॉट नोटेशन के साथ स्थिति ऑपरेटर $ का उपयोग करें।

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

> db.demo378.insertOne({
    Name: 'Chris',
    details: [
        { id: 101, Score: 56 },
        { id: 102, Score: 78 }
    ]
});
{ "acknowledged" : true, "insertedId" : ObjectId("5e5a758a2ae06a1609a00b0f") }

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

> db.demo378.find();

आउटपुट: दो सबडॉक्यूमेंट्स वाली सरणी।

अपडेट: id=102 वाले सबडॉक्यूमेंट के Score को 8 घटाएं

> db.demo378.update(
    { Name: "Chris", "details.id": 102 },
    { $inc: { "details.$.Score": -8 } }
);
WriteResult({ "nMatched" : 1, "nUpserted" : 0, "nModified" : 1 })

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

> db.demo378.find();

आउटपुट: दूसरा सबडॉक्यूमेंट अब Score: 70 दिखाता है।

व्याख्या

  • फिल्टर {Name:"Chris", "details.id":102} दस्तावेज़ और सरणी के अंदर विशिष्ट तत्व से मेल खाता है।
  • details.$.Score में $ फिल्टर से मेल खाने वाले सरणी तत्व (id=102) को संदर्भित करता है।
  • $inc उस तत्व के Score को -8 से बढ़ाता है।

सभी मिलान वाले तत्वों को अपडेट करने के लिए (MongoDB 3.6+)

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

> db.demo378.updateOne(
    { Name: "Chris" },
    { $inc: { "details.$[elem].Score": -8 } },
    { arrayFilters: [ { "elem.id": 102 } ] }
);

सबडॉक्यूमेंट जोड़ें/हटाएं

  • जोड़ें: { $push: { "details": { id: 103, Score: 90 } } }
  • हटाएं: { $pull: { "details": { id: 102 } } }
  1. - MongoDB में सभी सबडॉक्यूमेंट्स के साथ ऑब्जेक्ट्स के विशिष्ट जोड़े कैसे प्राप्त करें?

    ऑब्जेक्ट्स के विशिष्ट जोड़े प्राप्त करने के लिए, $group का उपयोग करें। आइए दस्तावेज़ों के साथ एक संग्रह बनाएं: > db.demo522.insertOne({Name:John,Score:45}); { acknowledged : true, insertedId : ObjectId(5e89b646b3fbf26334ef611b) } > db.demo522.insertOne({Name:Bob,Score:67}); { acknowledged : tr

  1. - MongoDB क्वेरीज़ में सबडॉक्यूमेंट्स को कैसे एक्सेस करें?

    MongoDB में सबडॉक्यूमेंट्स एक्सेस करने के लिए, डॉट नोटेशन के साथ find() का उपयोग करें। आइए दस्तावेज़ों के साथ एक संग्रह बनाएं: > db.demo670.insertOne({ id:101, details: { Name:Chris, Age:21, CountryName:US, SubjectName:MongoDB } }); { acknowledged :

  1. - MongoDB में सबडॉक्यूमेंट्स को लगातार जोड़ें

    सबडॉक्यूमेंट्स जोड़ने के लिए, MongoDB में $push का उपयोग करें। अपडेट के लिए update() का उपयोग किया जाता है। आइए दस्तावेजों के साथ एक कलेक्शन बनाते हैं: > db.demo587.insertOne({id:101,details:[{Name:Chris,Age:21,Marks:57}]}); { acknowledged : true, insertedId : ObjectId(5e92ba01fd2d90c177b5bcc9)