MongoDB
 sql >> डेटाबेस >  >> NoSQL >> MongoDB

Mongodb . में शब्दकोश अपडेट कर रहा है

सुनिश्चित नहीं है कि आप वास्तव में क्या चाहते हैं। MongoDB में अनिवार्य रूप से दो प्रकार के अपडेट होते हैं:आप एक परमाणु अद्यतन कर सकते हैं , या दस्तावेज़ बदलें

दस्तावेज़ को बदलना अक्सर आसान होता है , क्योंकि यह आपको संशोधन करने के लिए मानक C# संचालन का उपयोग करने की अनुमति देता है और यह उत्पन्न गुणों और इस तरह का पुनर्मूल्यांकन करेगा:

var user = new User { Name = "John Doe", Quests = 
   new Dictionary<string, Tuple<string, string>> { 
       { "hoho", new Tuple<string, string>("A", "A-Item") } } };
users.InsertOneAsync(user).Wait();
user.Quests = new Dictionary<string, Tuple<string, string>> { 
       { "hoho Modified", new Tuple<string, string>("B", "B-Item") } };
users.ReplaceOneAsync(p => p.Id == user.Id, user);

हालांकि, कभी-कभी परमाणु संशोधक का उपयोग करना आवश्यक होता है, जैसे $push , $pull , $set , $addToSet , आदि समवर्ती चिंताओं के कारण। मैं आम तौर पर इस तरह से जटिल एम्बेडेड ऑब्जेक्ट्स पर जटिल संचालन करना एक बुरा विचार मानता हूं, क्योंकि ऑब्जेक्ट की संगति की उच्च संभावना है। (एसिड अर्थ में, या 'ऑब्जेक्ट इनवेरिएंट' ) चेक नहीं किया जा सकता है।

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

यदि आप अभी भी उन परमाणु ऑपरेटरों का उपयोग करना चाहते हैं, तो मेरा सुझाव है कि आप एक नया प्रश्न पूछें क्योंकि वहां यह वास्तव में विवरण पर निर्भर करता है (शब्दकोश, डिफ़ॉल्ट रूप से, एक दस्तावेज़ के रूप में क्रमबद्ध है, एक सरणी के रूप में टपल, और उन्हें विभिन्न परमाणु संशोधक की आवश्यकता होती है मोंगोडीबी में)। उदाहरण के लिए, शब्दकोश में एक नया आइटम जोड़ने के लिए, $set . का उपयोग करें :

users.UpdateOneAsync(p => p.Id == user.Id, 
  Builders<User>.Update.Set("Quests.hoho Modified", 
     new Tuple<string, string>("B", "B-Item")));



  1. Redis
  2.   
  3. MongoDB
  4.   
  5. Memcached
  6.   
  7. HBase
  8.   
  9. CouchDB
  1. क्या मुझे उत्पाद परिवेश में allowDiskUse विकल्प का उपयोग करना चाहिए?

  2. मैं डॉकटर कंटेनर के उठने और चलने की प्रतीक्षा कैसे कर सकता हूं?

  3. आप कैसे पूछते हैं कि मोंगो में शून्य नहीं है?

  4. मोंगोडब समुच्चय (गिनती) एक साथ कई क्षेत्रों पर

  5. Mongoose का उपयोग करके ObjectId द्वारा खोजे जाने वाले दस्तावेज़ नहीं मिल रहे हैं