MongoDB उदाहरण के साथ अपडेट() दस्तावेज़

\

⚡ स्मार्ट सारांश

MongoDB Update() विधि दस्तावेज़ संचालन के माध्यम से संग्रह में मौजूद रिकॉर्ड को संशोधित करती है। यह विधि दस्तावेज़ों का चयन करने के लिए एक शर्त और फ़ील्ड मानों को बदलने के लिए $set जैसे संशोधक का उपयोग करती है, और इसका मल्टी विकल्प एक साथ कई मिलान करने वाले दस्तावेज़ों को अपडेट करता है।

  • अपडेट() विधि: update() कमांड दस्तावेज़ों में उन फ़ील्ड्स को बदलता है जो दी गई शर्त से मेल खाते हैं।
  • 🎯 मैच की शर्त: पहला तर्क यह चुनता है कि किन दस्तावेज़ों को अपडेट करना है, जैसे कि {Employeeid:1}.
  • 🔧 $सेट Operaटोर: $set ऑपरेटर पूरे दस्तावेज़ को बदले बिना किसी फ़ील्ड को एक नया मान असाइन करता है।
  • 📚 कई अपडेट: मल्टी ऑप्शन, या updateMany(), केवल एक दस्तावेज़ के बजाय मेल खाने वाले प्रत्येक दस्तावेज़ को संशोधित करता है।
  • अप्सर्ट: जब कोई मौजूदा दस्तावेज़ शर्त से मेल नहीं खाता है, तो अप्सर्ट विकल्प एक नया दस्तावेज़ सम्मिलित करता है।
  • 🔄 आधुनिक विधियाँ: updateOne(), updateMany(), और replaceOne() अप्रचलित update() फ़ंक्शन के वर्तमान प्रतिस्थापन हैं।

MongoDB अपडेट() दस्तावेज़

बुनियादी दस्तावेज़ अद्यतन

MongoDB किसी संग्रह के दस्तावेज़ों को अपडेट करने के लिए update() कमांड प्रदान करता है। केवल उन दस्तावेज़ों को अपडेट करने के लिए जिन्हें आप अपडेट करना चाहते हैं, आप अपडेट स्टेटमेंट में एक मानदंड जोड़ सकते हैं ताकि केवल चयनित दस्तावेज़ ही अपडेट हों।

कमांड में मूल पैरामीटर वह शर्त है जिसके लिए दस्तावेज़ को अद्यतन करने की आवश्यकता है, और अगला पैरामीटर वह संशोधन है जिसे निष्पादित करने की आवश्यकता है।

निम्नलिखित उदाहरण दिखाता है कि यह कैसे किया जा सकता है।

चरण 1) अद्यतन आदेश जारी करें

चरण 2) वह शर्त चुनें जिसका उपयोग करके आप यह तय करना चाहते हैं कि किस दस्तावेज़ को अपडेट करने की आवश्यकता है। हमारे उदाहरण में, हम उस दस्तावेज़ को अपडेट करना चाहते हैं जिसमें कर्मचारी आईडी 22 है।

चरण 3) फ़ील्ड नाम को संशोधित करने के लिए सेट कमांड का उपयोग करें

चरण 4) वह फ़ील्ड नाम चुनें जिसे आप संशोधित करना चाहते हैं और उसके अनुसार नया मान दर्ज करें।

db.Employee.update(
{"Employeeid" : 1},
{$set: { "EmployeeName" : "NewMartin"}});

यदि आदेश सफलतापूर्वक निष्पादित होता है, तो निम्नलिखित आउटपुट दिखाया जाएगा

आउटपुट:

बुनियादी दस्तावेज़ अद्यतन

आउटपुट से स्पष्ट रूप से पता चलता है कि एक रिकॉर्ड शर्त से मेल खाता है और इसलिए संबंधित फ़ील्ड मान संशोधित किया गया था।

MongoDB अपडेट Operaमरोड़

किसी फ़ील्ड को बदलने का सबसे आम तरीका $set ऑपरेटर है, लेकिन MongoDB यह विभिन्न आवश्यकताओं के लिए कई अपडेट ऑपरेटर प्रदान करता है। आप इन्हें update() फ़ंक्शन के दूसरे आर्गुमेंट में $set के साथ या उसके स्थान पर रख सकते हैं।

  • $सेट: किसी फ़ील्ड का मान निर्धारित करता है, और यदि फ़ील्ड मौजूद नहीं है तो उसे बनाता है।
  • $अनसेट: दस्तावेज़ से एक फ़ील्ड को पूरी तरह से हटा देता है।
  • $inc: किसी संख्यात्मक फ़ील्ड को दी गई मात्रा से बढ़ाता या घटाता है।
  • $mul: किसी संख्यात्मक फ़ील्ड के मान को गुणा करता है।
  • नाम बदलें: किसी फ़ील्ड का नाम बदलकर नया नाम रख देता है।
  • $पुश: किसी ऐरे फ़ील्ड में एक मान जोड़ता है।
  • $खींचें: किसी ऐरे फ़ील्ड से मेल खाने वाले मानों को हटाता है।

प्रत्येक ऑपरेटर केवल आपके द्वारा निर्दिष्ट फ़ील्ड को ही लक्षित करता है, जिससे दस्तावेज़ का शेष भाग अपरिवर्तित रहता है। आप एक ही update() कॉल में कई ऑपरेटरों को संयोजित करके एक साथ कई फ़ील्ड को संशोधित कर सकते हैं, जिससे अपडेट सटीक रहते हैं और आपके द्वारा रखे जाने वाले डेटा को ओवरराइट होने से बचाया जा सकता है।

एकाधिक मान अद्यतन करना

यह सुनिश्चित करने के लिए कि एकाधिक/बल्क दस्तावेज़ एक ही समय में अपडेट किए जाएं MongoDB आपको मल्टी विकल्प का उपयोग करना होगा क्योंकि अन्यथा डिफ़ॉल्ट रूप से एक समय में केवल एक दस्तावेज़ ही संशोधित किया जाता है।

निम्नलिखित उदाहरण दिखाता है कि कई दस्तावेज़ों को कैसे अद्यतन किया जाए।

इस उदाहरण में, हम सबसे पहले उस दस्तावेज़ को ढूँढेंगे जिसमें कर्मचारी आईडी “1” है और कर्मचारी का नाम “मार्टिन” से बदलकर “न्यूमार्टिन” कर देंगे।

चरण 1) अद्यतन आदेश जारी करें

चरण 2) वह शर्त चुनें जिसका उपयोग करके आप यह तय करना चाहते हैं कि किस दस्तावेज़ को अपडेट करने की आवश्यकता है। हमारे उदाहरण में, हम चाहते हैं कि जिस दस्तावेज़ की कर्मचारी आईडी “1” है उसे अपडेट किया जाए।

चरण 3) वह फ़ील्ड नाम चुनें जिसे आप संशोधित करना चाहते हैं और उसके अनुसार नया मान दर्ज करें।

db.Employee.update
(
	{
		Employeeid : 1
	},
	{
		$set :
		{
			"EmployeeName" : "NewMartin",
			"Employeeid" : 22
		}
	}
)

यदि आदेश सफलतापूर्वक निष्पादित होता है और यदि आप चलाते हैं "पाना" कर्मचारी आईडी 22 वाले दस्तावेज़ को खोजने के लिए कमांड का उपयोग करें, आपको निम्नलिखित आउटपुट दिखाई देगा

आउटपुट:

एकाधिक मान अद्यतन करना

आउटपुट से स्पष्ट रूप से पता चलता है कि एक रिकॉर्ड शर्त से मेल खाता है और इसलिए संबंधित फ़ील्ड मान संशोधित किया गया था।

किसी दस्तावेज़ को अप्सर्ट कैसे करें MongoDB

अप्सर्ट, अपडेट और इन्सर्ट का संयोजन है। जब आप इसे सक्षम करते हैं, MongoDB यह शर्त से मेल खाने वाले दस्तावेज़ को अपडेट करता है, या यदि कोई मेल नहीं मिलता है तो एक नया दस्तावेज़ सम्मिलित करता है। यह तब उपयोगी होता है जब आप सुनिश्चित नहीं होते कि कोई रिकॉर्ड पहले से मौजूद है या नहीं।

अप्सर्ट ऑपरेशन करने के लिए, update() फ़ंक्शन के तीसरे आर्गुमेंट के रूप में upsert विकल्प को true पर सेट करके जोड़ें:

db.Employee.update(
  {Employeeid: 5},
  {$set: {EmployeeName: "Sofia"}},
  {upsert: true}
)

यहां क्या होता है:

  • यदि एम्प्लॉई आईडी 5 वाला कोई दस्तावेज़ मौजूद है, MongoDB यह अपने EmployeeName फ़ील्ड को अपडेट करता है।
  • यदि ऐसा कोई दस्तावेज मौजूद नहीं है, MongoDB एम्प्लॉई आईडी 5 और एम्प्लॉई नाम के साथ एक नया दस्तावेज़ सम्मिलित करता है।Sofiप्रति"।

काउंटर, सेटिंग्स और किसी भी वर्कफ़्लो के लिए अप्सर्ट उपयोगी होते हैं जहाँ आप पहली बार उपयोग करने पर एक रिकॉर्ड बनाना चाहते हैं और बाद में उसे अपडेट करना चाहते हैं। आधुनिक समय में MongoDB{upsert: true} को विकल्पों में पास करके updateOne() और updateMany() के माध्यम से भी यही व्यवहार प्राप्त किया जा सकता है। शर्त के साथ सावधानी बरतें, क्योंकि व्यापक फ़िल्टर को upsert के साथ मिलाने से अप्रत्याशित दस्तावेज़ बन सकते हैं।

updateOne() बनाम updateMany() बनाम replaceOne()

update() विधि अब एक अप्रचलित कमांड है। आधुनिक MongoDB चालकों ने इसके व्यवहार को तीन स्पष्ट तरीकों में विभाजित किया। नीचे दी गई तालिका उनकी तुलना करती है:

विधि यह क्या करता है प्रभावित दस्तावेज़
अपडेटवन() पहले मिलान करने वाले दस्तावेज़ पर अपडेट ऑपरेटर लागू करता है एक
अद्यतन अनेक() प्रत्येक मिलान दस्तावेज़ पर अपडेट ऑपरेटर लागू करता है बहुत
replaceOne() पहले मिलान वाले दस्तावेज़ को पूरी तरह से एक नए दस्तावेज़ से बदल देता है एक

किसी एक विशेष बदलाव के लिए updateOne() का उपयोग करें, पुराने multi विकल्प के बजाय updateMany() का उपयोग करें, और जब आप फ़ील्ड संपादित करने के बजाय पूरे दस्तावेज़ को बदलना चाहते हैं तो replaceOne() का उपयोग करें। ये विधियाँ स्पष्ट परिणाम देती हैं जिसमें दिखाया जाता है कि कितने दस्तावेज़ मेल खाते हैं और कितने संशोधित किए गए हैं, जिससे ये update() की तुलना में अधिक सुरक्षित और डीबग करने में आसान हो जाती हैं।

अक्सर पूछे जाने वाले प्रश्न

$set जैसे अपडेट ऑपरेटर के बिना, MongoDB यह आपके द्वारा प्रदान की गई वस्तु से पूरे मिलान किए गए दस्तावेज़ को बदल देता है, और उसमें शामिल न होने वाले सभी फ़ील्ड को हटा देता है। विशिष्ट फ़ील्ड को बदलने के लिए हमेशा $set का उपयोग करें।ping बाकी सब सुरक्षित है।

हाँ। यदि $set में नामित फ़ील्ड मिलान किए गए दस्तावेज़ में मौजूद नहीं है, MongoDB यह दिए गए मान के साथ इसे जोड़ता है। इससे $set मौजूदा फ़ील्ड को अपडेट करने और नए फ़ील्ड जोड़ने दोनों के लिए उपयोगी हो जाता है।

findOneAndUpdate() फ़ंक्शन का उपयोग करते समय returnDocument विकल्प को 'after' पर सेट करें। यह परिवर्तन को लागू करता है और एक ही बार में संशोधित दस्तावेज़ लौटाता है, जो तब उपयोगी होता है जब आपको नए मान तुरंत चाहिए होते हैं।

एआई एक साधारण अनुरोध को सही शर्त और ऑपरेटर, जैसे कि $set या $inc, के साथ अपडेट या अपडेटमेनी कमांड में बदल सकता है, और प्रत्येक भाग को समझा सकता है ताकि शुरुआती लोग गलतियों से बच सकें।

हां। एआई ऐसे अपडेट को चिह्नित कर सकता है जिसमें $set शामिल नहीं है और जो पूरे दस्तावेज़ों को बदल देगा, जब कोई फ़िल्टर सभी चीज़ों से मेल खाता है तो चेतावनी दे सकता है, और उत्पादन में चलाने से पहले एक प्रतिलिपि पर परीक्षण करने का सुझाव दे सकता है।

इस पोस्ट को संक्षेप में इस प्रकार लिखें: