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

MongoDB सरणी के भीतर डेटाबेस फ़ील्ड का नाम बदलें

इसके लायक क्या है, जबकि यह करना भयानक लगता है, समाधान वास्तव में बहुत आसान है। यह निश्चित रूप से इस बात पर निर्भर करता है कि आपके पास कितने रिकॉर्ड हैं। लेकिन यहाँ मेरा उदाहरण है:

db.Setting.find({ 'Value.Tiers.0.AssetsUnderManagement': { $exists: 1 } }).snapshot().forEach(function(item)
{    
    for(i = 0; i != item.Value.Tiers.length; ++i)
    {
        item.Value.Tiers[i].Aum = item.Value.Tiers[i].AssetsUnderManagement;
        delete item.Value.Tiers[i].AssetsUnderManagement;
    }
    
    db.Setting.update({_id: item._id}, item);
});

मैं अपने संग्रह पर पुनरावृति करता हूं जहां सरणी पाई जाती है और "गलत" नाम पाया जाता है। मैं फिर उप संग्रह पर पुनरावृति करता हूं, नया मान सेट करता हूं, पुराने को हटाता हूं और पूरे दस्तावेज़ को अपडेट करता हूं। यह अपेक्षाकृत दर्द रहित था। माना कि मेरे पास खोजने के लिए केवल कुछ दसियों हज़ार पंक्तियाँ हैं, जिनमें से केवल कुछ दर्जन ही मानदंडों को पूरा करती हैं।

फिर भी, मुझे आशा है कि यह उत्तर किसी की मदद करेगा!

संपादित करें:जोड़ा गया snapshot() क्वेरी के लिए। टिप्पणियों में देखें क्यों।

<ब्लॉकक्वॉट>

आपको snapshot() apply लागू करना होगा डेटाबेस से किसी भी दस्तावेज़ को पुनर्प्राप्त करने से पहले कर्सर पर। आप केवल snapshot() का उपयोग कर सकते हैं शार्प न किए गए संग्रहों के साथ।

MongoDB 3.4 से, snapshot() समारोह हटा दिया गया था। तो अगर मोंगो 3.4+ का उपयोग कर रहे हैं, तो ऊपर दिए गए उदाहरण को हटा देना चाहिए snapshot() समारोह।



  1. Redis
  2.   
  3. MongoDB
  4.   
  5. Memcached
  6.   
  7. HBase
  8.   
  9. CouchDB
  1. मोंगो एम्बेडेड दस्तावेज़ को सरणी में बदलें

  2. मोंगो में विरल अनुक्रमणिका और अशक्त मान

  3. प्रमाणीकरण के साथ MongoDB उदाहरणों के लिए कस्टम उपयोगकर्ता कनेक्शन स्ट्रिंग्स

  4. $एकत्रीकरण ढांचे में किसी वस्तु को खोलना

  5. फ्लाई पर नए उल्का संग्रह बनाना