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

मोंगोडब में नेस्टेड सरणियों को अद्यतन करना

यहां बड़ा सवाल है, क्या आपको मोंगो के "ऐडटॉसेट" और "पुश" संचालन का लाभ उठाने की ज़रूरत है? यदि आप वास्तव में सरणी में केवल अलग-अलग आइटम को संशोधित करने की योजना बना रहे हैं, तो आपको संभवतः इन सरणियों को ऑब्जेक्ट के रूप में बनाना चाहिए।

यहां बताया गया है कि मैं इसकी संरचना कैसे करूंगा:

{
    id: 1,
    items: 
        { 
          "2" : { "blocks" : { "3" : { txt : 'hello' } } },
          "5" : { "blocks" : { "1" : { txt : 'foo'}, "2" : { txt : 'bar'} } }
        }
}

यह मूल रूप से सब कुछ को सरणियों के बजाय JSON ऑब्जेक्ट्स में बदल देता है। आप $push . का उपयोग करने की क्षमता खो देते हैं और $addToSet लेकिन मुझे लगता है कि इससे सब कुछ आसान हो जाता है। उदाहरण के लिए, आपकी क्वेरी कुछ इस तरह दिखेगी:

db.objects.update({'items.2': {$exists:true} }, {'$set': {'items.2.blocks.0.txt': 'hi'}})

आप यह भी देखेंगे कि मैंने "आईडी" को छोड़ दिया है। जब आप इस तरह की चीजों को नेस्ट कर रहे हों तो आप आम तौर पर "आईडी" को केवल उस नंबर को इंडेक्स के रूप में उपयोग करके बदल सकते हैं। "आईडी" अवधारणा अब निहित है।

इस सुविधा को 3.6 में अभिव्यंजक अद्यतनों के साथ जोड़ा गया है।

db.objects.update( {id: 1 }, { $set: { 'items.$[itm].blocks.$[blk].txt': "hi", } }, { multi: false, arrayFilters: [ { 'itm.id': 2 }, { 'blk.id': 3} ] } )



  1. Redis
  2.   
  3. MongoDB
  4.   
  5. Memcached
  6.   
  7. HBase
  8.   
  9. CouchDB
  1. MongoDB में प्रत्येक वार्तालाप के अंतिम संदेश को सूचीबद्ध करना, जिसमें एक उपयोगकर्ता शामिल है

  2. MongoDB में क्वेरी प्लान से इंडेक्स छिपाने के 3 तरीके

  3. मोंगोडीबी डालें ()

  4. Mongodb $lookup _id . के साथ काम नहीं कर रहा है

  5. एकत्रित डेटा के लिए MongoDB सही स्कीमा