MongoDB में किसी दस्तावेज़ को उसके _id (ObjectId) द्वारा अपडेट करने के लिए, फिल्टर में ObjectId("...") का उपयोग करें और नए मान सेट करने के लिए $set का उपयोग करें।
उदाहरण: छात्र संग्रह
> db.demo34.insertOne({"StudentFirstName":"Chris","StudentAge":24});
{ "acknowledged" : true, "insertedId" : ObjectId("5e1758b4cfb11e5c34d898cd") }
> db.demo34.insertOne({"StudentFirstName":"David","StudentAge":23});
{ "acknowledged" : true, "insertedId" : ObjectId("5e1758bdcfb11e5c34d898ce") }
> db.demo34.insertOne({"StudentFirstName":"Bob","StudentAge":20});
{ "acknowledged" : true, "insertedId" : ObjectId("5e1758c6cfb11e5c34d898cf") }
दस्तावेज़ देखना
> db.demo34.find();
आउटपुट: तीन दस्तावेज़।
ObjectId द्वारा अपडेट
> db.demo34.update(
{ _id: ObjectId("5e1758bdcfb11e5c34d898ce") },
{ $set: { "StudentFirstName": "Mike", "StudentAge": 19 } }
);
WriteResult({ "nMatched" : 1, "nUpserted" : 0, "nModified" : 1 })
परिणाम जांचें
> db.demo34.find();
आउटपुट: दूसरा दस्तावेज़ अब "Mike", 19 दिखाता है।
मुख्य बिंदु
- फिल्टर में हमेशा
ObjectId("...")का उपयोग करें, स्ट्रिंग नहीं (जब तक ड्राइवर स्वचालित रूपांतरण न करे)। - पुराने
update()के बजायupdateOne()(एकल) याupdateMany()(एकाधिक) पसंद करें। $setकेवल निर्दिष्ट फील्ड्स को संशोधित करता है; अन्य फील्ड्स अपरिवर्तित रहते हैं।- लिखने की चिंता और पुष्टि के लिए परिणाम ऑब्जेक्ट (
nMatched,nModified) की जांच करें।
आधुनिक सिंटैक्स (MongoDB 3.2+)
> db.demo34.updateOne(
{ _id: ObjectId("5e1758bdcfb11e5c34d898ce") },
{ $set: { "StudentFirstName": "Mike", "StudentAge": 19 } }
);