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

MongoDB में एग्रीगेशन के बाद अपडेट कैसे करें?

MongoDB एग्रीगेशन पाइपलाइन दस्तावेज़ों को संशोधित नहीं कर सकती; वे केवल पढ़ते हैं और परिणाम लौटाते हैं। एग्रीगेशन परिणामों के आधार पर दस्तावेज़ अपडेट करने के लिए, एग्रीगेशन चलाएं, फिर प्रोग्रामेटिक रूप से updateOne/updateMany या bulkWrite का उपयोग करें।

उदाहरण: नेस्टेड विवरण वाला दस्तावेज़

> db.demo376.insertOne({
    "id" : 101,
    "details" : [
        { "Name":"Chris", "Age":21, "Score":45 },
        { "Name":"David", "Age":23, "Score":67 },
        { "Name":"Bob", "Age":20, "Score":54 }
    ]
});
{ "acknowledged" : true, "insertedId" : ObjectId("5e5a71b92ae06a1609a00b0d") }

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

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

अपडेट: arrayFilters के साथ शर्तों को पूरा करने वाले सरणी तत्वों के लिए Age बढ़ाएं

> db.demo376.update(
    { "id" : 101 },
    { $inc: { "details.$[d].Age": 3 } },
    { arrayFilters: [ { $and: [ { "d.Age": 21 }, { "d.Score": { $gt: 40 } } ] } ] }
);
WriteResult({ "nMatched" : 1, "nUpserted" : 0, "nModified" : 1 })

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

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

आउटपुट: Chris की Age अब 24 है; अन्य अपरिवर्तित।

व्याख्या

  • arrayFilters शर्तों को परिभाषित करता है जो सरणी तत्व को अपडेट के लिए योग्य बनाते हैं।
  • $[d] फ़िल्टर्ड स्थितीय ऑपरेटर arrayFilters में d पहचानकर्ता से मेल खाने वाले प्रत्येक तत्व पर लागू होता है।
  • यह एग्रीगेशन के बिना घोषणात्मक सशर्त सरणी अपडेट की अनुमति देता है।

पैटर्न: एग्रीगेशन → अपडेट (एप्लिकेशन कोड में)

  1. मिलान करने वाले दस्तावेज़/तत्व खोजने के लिए एग्रीगेशन चलाएं।
  2. परिणामों पर पुनरावृत्त करें।
  3. प्रत्येक के लिए updateOne जारी करें (या bulkWrite के लिए बैच)।

नोट

MongoDB 4.2+ updateMany के साथ एग्रीगेशन पाइपलाइन का समर्थन करता है (db.coll.updateMany(filter, [ { $set: { ... } } ])), लेकिन यह अभी भी $merge/$out के बिना मौजूदा संग्रह में लिख नहीं सकता।

  1. - MongoDB में इन्सर्ट या अपडेट से पहले दस्तावेज़ कैसे सत्यापित करें?

    MongoDB में स्कीमा सत्यापन से दस्तावेज़ सत्यापित करें दस्तावेज़ सत्यापित करने के लिए, सत्यापन की अवधारणा का उपयोग करें। क्वेरी: > db.createCollection(demo356, {validator: { $and: [ {FirstName: {$type: string, $exists: true}} ] }}) { ok : 1 } दस्तावेज़ों के साथ संग्रह बनाएं: > db.demo356.inse

  1. - MongoDB में सशर्त अपडेट करना

    MongoDB में update() और $set का उपयोग करके सशर्त अपडेट करना MongoDB में किसी शर्त के आधार पर दस्तावेज़ को अपडेट करने के लिए update() मेथड के साथ क्वेरी फिल्टर और $set ऑपरेटर का उपयोग करें। upsert: true विकल्प दस्तावेज़ न मिलने पर नया दस्तावेज़ बनाता है। उदाहरण: संग्रह और दस्तावेज़ बनाना > db.dem

  1. - MongoDB में रिकॉर्ड कैसे अपडेट करें?

    रिकॉर्ड अपडेट करने के लिए, आपको _id के आधार पर अपडेट करना होगा। आइए दस्तावेज़ों के साथ एक संग्रह बनाएं: > db.demo458.insertOne( {_id:101,"Name":"David" } ); { "acknowledged" : true, "insertedId" : 101 } > db.demo458.insertOne( {_id:102,"Name":