Computer >> कंप्यूटर ट्यूटोरियल >  >> प्रोग्रामिंग >> MongoDB

MongoDB में वेरिएबल को स्वयं के साथ अपडेट करें

MongoDB में $set का उपयोग करके फ़ील्ड को स्वयं के आधार पर अपडेट करना

MongoDB में आप सीधे { $set: { field: field + "suffix" } } नहीं कर सकते क्योंकि फ़ील्ड रेफरेंस अपडेट ऑपरेशन में समर्थित नहीं है। इसके लिए एग्रीगेशन पाइपलाइन (MongoDB 4.2+) या एप्लिकेशन-लेवल लॉजिक आवश्यक है।

सैंपल डेटा बनाना

> db.demo256.insertOne({"Name":"Chris"});
{ "acknowledged" : true, "insertedId" : ObjectId("5e47a3e91627c0c63e7dba8b") }
> db.demo256.insertOne({"Name":"Bob"});
{ "acknowledged" : true, "insertedId" : ObjectId("5e47a3ea1627c0c63e7dba8c") }
> db.demo256.insertOne({"Name":"David"});
{ "acknowledged" : true, "insertedId" : ObjectId("5e47a3eb1627c0c63e7dba8d") }

दस्तावेज़ देखना

> db.demo256.find();

आउटपुट:


उदाहरण में गलत दृष्टिकोण


आउटपुट (गलत - स्ट्रिंग लिटरल जोड़ा गया):


समस्या

"Name" + " is a student" स्ट्रिंग कन्कैटनेशन है, फ़ील्ड रेफरेंस नहीं। यह फ़ील्ड मान को शाब्दिक स्ट्रिंग "Name is a student" पर सेट करता है।

सही समाधान: एग्रीगेशन पाइपलाइन अपडेट (MongoDB 4.2+)


सही आउटपुट:


पुराने वर्जन के लिए: एप्लिकेशन-लेवल अपडेट


उपयोगी स्ट्रिंग ऑपरेटर्स (एग्रीगेशन में)

  • $concat: स्ट्रिंग्स जोड़ें
  • $substr: सबस्ट्रिंग निकालें
  • $toLower/$toUpper: केस बदलें
  • $trim: व्हाइटस्पेस हटाएं

नोट

मूल उदाहरण में गलत दृष्टिकोण दिखाया गया है। यह एक सामान्य गलतफहमी है - MongoDB अपडेट ऑपरेटर्स ($set, $inc, आदि) में फ़ील्ड रेफरेंस का समर्थन नहीं करते; केवल एग्रीगेशन पाइपलाइन अपडेट (4.2+) में अभिव्यक्तियों का उपयोग कर सकते हैं।

  1. - MongoDB save() मेथड में वेरिएबल वैल्यू कैसे सेट करें?

    MongoDB में वेरिएबल वैल्यू सेट करने के लिए db.yourCollectionName.save(yourVariableName) का उपयोग करें, जहां yourVariableName आपका वेरिएबल है। उदाहरण: वेरिएबल बनाना और सेव करना आइए एक वेरिएबल बनाते हैं और उसे कलेक्शन में सेव करते हैं: var Info={Name:David, CountryName:US, ProjectDetails:[{ClientNam

  1. - MongoDB में छात्र David के मार्क्स वैल्यू के साथ दस्तावेज़ कैसे अपडेट करें?

    forEach() का उपयोग करें और छात्र नाम David को ढूंढकर उसी छात्र के लिए नए मार्क्स अपडेट करें। नमूना डेटा बनाना db.demo634.insertOne({Name:David,Marks:37}); अपडेट से पहले दस्तावेज़ देखना db.demo634.find(); { Name : Chris, Marks : 76 } { Name : Bob, Marks : 67 } { Name : David, Marks : 37 } David

  1. - MongoDB में Sub Collection के साथ Concurrent Update

    Update के लिए simply update() का उपयोग करें। Sub collection तक पहुँचने और update करने के लिए $push operator के साथ dot notation का उपयोग करें। Collection बनाना > db.demo547.insertOne( ... { ... Name : Chris, ... Test : ... { ... FirstTest : ... { ... Scores: [56,29,76] ...