update()
का उपयोग करें विधि या save()
MongoDB में दस्तावेज़ों को अद्यतन करने की विधि।
MongoDB में, दोनों update()
विधि और save()
दस्तावेज़ को अद्यतन करने के लिए विधि का उपयोग किया जा सकता है।
update()
विधि मौजूदा दस्तावेज़ या दस्तावेज़ों में मानों को अद्यतन करती है, जबकि save()
विधि एक दस्तावेज़ को एक पैरामीटर के रूप में पारित दस्तावेज़ के साथ बदल देती है।
हालांकि, update()
पास किए गए पैरामीटर के आधार पर विधि पूरे दस्तावेज़ को भी बदल सकती है।
update()
विधि
यहां update()
का एक उदाहरण दिया गया है विधि।
सबसे पहले, अद्यतन करने के लिए एक रिकॉर्ड का चयन करें:
db.musicians.find({ _id: 6 }).pretty()
परिणाम:
{ "_id" : 6, "name" : "Jeff Martin", "instrument" : "Vocals", "born" : 1969 }
जेफ वास्तव में सिर्फ गाने के अलावा भी बहुत कुछ करता है। तो चलिए कुछ और उपकरण जोड़ते हैं। हम $set
. का उपयोग करेंगे एकल फ़ील्ड को अपडेट करने के लिए ऑपरेटर।
db.musicians.update( { _id: 6 }, { $set:{ instrument : [ "Vocals", "Guitar", "Sitar" ] } } )
परिणाम:
WriteResult({ "nMatched" : 1, "nUpserted" : 0, "nModified" : 1 })
अब यदि हम कोई अन्य प्रश्न करते हैं, तो हम देखते हैं कि दस्तावेज़ को निर्दिष्ट के अनुसार अद्यतन किया गया है:
db.musicians.find({ _id: 6 }).pretty()
परिणाम:
{ "_id" : 6, "name" : "Jeff Martin", "instrument" : [ "Vocals", "Guitar", "Sitar" ], "born" : 1969 }
कुछ और विकल्प:
- यदि फ़ील्ड मौजूद नहीं है, तो
$set
ऑपरेटर निर्दिष्ट मान के साथ एक नया फ़ील्ड जोड़ देगा, बशर्ते कि नया फ़ील्ड किसी प्रकार की बाधा का उल्लंघन न करे। - आप
{ upsert: true }
. का भी उपयोग कर सकते हैं एक नया दस्तावेज़ बनाने के लिए जब कोई दस्तावेज़ क्वेरी से मेल नहीं खाता। - आप उपयोग कर सकते हैं
{ multi: true }
क्वेरी मानदंड को पूरा करने वाले कई दस्तावेज़ों को अपडेट करने के लिए। डिफ़ॉल्ट रूप से, यह विकल्पfalse
. पर सेट होता है , इसलिए केवल एक दस्तावेज़ को अपडेट किया जाता है यदि आप इसेtrue
. पर सेट नहीं करते हैं ।
save()
विधि
save()
विधि update()
. के बीच एक क्रॉस है और insert()
. जब आप save()
. का उपयोग करते हैं विधि, यदि दस्तावेज़ मौजूद है, तो इसे हटा दिया जाएगा। अगर यह मौजूद नहीं है, तो इसे बनाया जाएगा।
अगर आप _id
निर्दिष्ट नहीं करते हैं फ़ील्ड में, MongoDB एक _id
. के साथ एक दस्तावेज़ बनाएगा जिसमें एक ObjectId
है मान (insert()
के अनुसार) )।
यदि आप एक _id
निर्दिष्ट करते हैं फ़ील्ड, यह { upsert: true }
. के साथ एक अपडेट करता है , अर्थात, यदि कोई दस्तावेज़ क्वेरी से मेल नहीं खाता है, तो यह एक नया दस्तावेज़ बनाता है।
हमारे पास वर्तमान में हमारे
निर्माताओं
. में कोई दस्तावेज़ नहीं है संग्रह। आइए save()
. का उपयोग करके एक बनाएं विधि:
db.producers.save({ _id: 1, name: "Bob Rock" })
परिणाम:
WriteResult({ "nMatched" : 0, "nUpserted" : 1, "nModified" : 0, "_id" : 1 })
अब अगर हम निर्माताओं को खोजते हैं संग्रह, हम अपना नया बनाया रिकॉर्ड देखते हैं:
db.producers.find()
परिणाम:
{ "_id" : 1, "name" : "Bob Rock" }