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

आप किसी दस्तावेज़ की सरणी में ऑब्जेक्ट्स को कैसे अपडेट करते हैं (नेस्टेड अपडेटिंग)

प्रश्न #1 के लिए, आइए इसे दो भागों में विभाजित करें। सबसे पहले, "my_item_two" के बराबर "items.item_name" वाले किसी भी दस्तावेज़ को बढ़ाएँ। इसके लिए आपको स्थितीय "$" ऑपरेटर का उपयोग करना होगा। कुछ इस तरह:

 db.bar.update( {user_id : 123456 , "items.item_name" : "my_item_two" } , 
                {$inc : {"items.$.price" : 1} } , 
                false , 
                true);

ध्यान दें कि यह केवल किसी भी सरणी में पहले मिलान किए गए उप-दस्तावेज़ को बढ़ाएगा (इसलिए यदि आपके पास "item_name" के साथ "my_item_two" के बराबर सरणी में कोई अन्य दस्तावेज़ है, तो यह वृद्धि नहीं होगी)। लेकिन हो सकता है कि आप यही चाहते हों।

दूसरा भाग अधिक पेचीदा है। हम एक नए आइटम को "my_item_two" के बिना एक सरणी में इस प्रकार पुश कर सकते हैं:

 db.bar.update( {user_id : 123456, "items.item_name" : {$ne : "my_item_two" }} , 
                {$addToSet : {"items" : {'item_name' : "my_item_two" , 'price' : 1 }} } ,
                false , 
                true);

आपके प्रश्न #2 के लिए, उत्तर आसान है। "my_item_three" वाले किसी भी दस्तावेज़ में आइटम_थ्री की कुल और कीमत बढ़ाने के लिए, आप एक ही समय में कई फ़ील्ड पर $inc ऑपरेटर का उपयोग कर सकते हैं। कुछ इस तरह:

db.bar.update( {"items.item_name" : {$ne : "my_item_three" }} ,
               {$inc : {total : 1 , "items.$.price" : 1}} ,
               false ,
               true);


  1. Redis
  2.   
  3. MongoDB
  4.   
  5. Memcached
  6.   
  7. HBase
  8.   
  9. CouchDB
  1. पांडा का उपयोग करके बड़े डेटा कार्यप्रवाह

  2. स्वचालित डेटाबेस स्वास्थ्य जांच

  3. एकाधिक मानदंडों से मेल खाने वाले दस्तावेज़ कैसे खोजें

  4. स्प्रिंग डेटा MongoDB:अनुमान और एकत्रीकरण

  5. MapReduce का उपयोग करके डुप्लिकेट रिकॉर्ड हटाना