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

बुनियादी दस्तावेज़ अद्यतन
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() की तुलना में अधिक सुरक्षित और डीबग करने में आसान हो जाती हैं।


