MongoDB में $set ऑपरेटर का उपयोग करके आंशिक अपडेट करना
MongoDB में किसी दस्तावेज़ के केवल विशिष्ट फील्ड्स को अपडेट करने के लिए, पूरे दस्तावेज़ को रिप्लेस करने के बजाय $set ऑपरेटर का उपयोग करें। यह अन्य फील्ड्स को अपरिवर्तित छोड़ देता है।
उदाहरण: संग्रह और दस्तावेज़ बनाना
> db.demo401.insertOne(
{
"_id" : 1001,
"Name" : "Chris",
"SubjectName" : "MongoDB",
"Score" : 45
}
);
{ "acknowledged" : true, "insertedId" : 1001 }
दस्तावेज़ देखना
>> db.demo401.find();
आउटपुट:
{ "_id" : 1001, "Name" : "Chris", "SubjectName" : "MongoDB", "Score" : 45 }
केवल Score फील्ड अपडेट करना ($set के साथ)
> db.demo401.update({_id: 1001}, {$set: {Score:89}})
WriteResult({ "nMatched" : 1, "nUpserted" : 0, "nModified" : 1 })
अपडेट के बाद दस्तावेज़ देखना
> db.demo401.find();
आउटपुट:
{ "_id" : 1001, "Name" : "Chris", "SubjectName" : "MongoDB", "Score" : 89 }
मुख्य अंतर:
| तरीका | व्यवहार |
|---|---|
update({_id:1}, {Score: 89}) | पूरा दस्तावेज़ रिप्लेस हो जाता है (अन्य फील्ड्स खो जाते हैं) |
update({_id:1}, {$set: {Score: 89}}) | केवल Score अपडेट होता है, बाकी फील्ड्स बने रहते हैं |
अन्य उपयोगी ऑपरेटर्स:
$inc- संख्यात्मक मान बढ़ाना/घटाना:{$inc: {Score: 10}}$mul- गुणा करना:{$mul: {Score: 1.1}}(10% वृद्धि)$unset- फील्ड हटाना:{$unset: {Score: ""}}
आधुनिक सिंटैक्स: updateOne() या updateMany() का उपयोग करें।