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

खाली सरणी वाली सरणी प्रविष्टियाँ निकालें

पता नहीं आपने क्या प्रयास किया क्योंकि यह आपके प्रश्न में शामिल नहीं है, लेकिन एक खाली सरणी की जांच करने का सबसे अच्छा तरीका मूल रूप से यह देखना है कि 0 अनुक्रमणिका $exists से मेल नहीं खाती :

Inventory.update(
    { "products.rates.0": { "$exists": false } },
    { 
        "$pull": {
            "products": { "rates.0": { "$exists": false } }
        }
    },
    { "multi": true },
    function(err,numAffected) {

    }
)

.update() . का "क्वेरी" भाग कथन यह सुनिश्चित कर रहा है कि हम केवल उन दस्तावेज़ों को छूने का प्रयास करें जिनमें "products.rates" में एक खाली सरणी है . यह आवश्यक नहीं है, लेकिन यह उन दस्तावेज़ों पर निम्नलिखित "अपडेट" कथन की स्थिति का परीक्षण करने से बचता है जहां वह शर्त true नहीं है किसी भी सरणी तत्व के लिए, और इस प्रकार चीजों को थोड़ा तेज बनाता है।

वास्तविक "अपडेट" भाग लागू होता है $pull "products" . पर सरणी उन वस्तुओं में से किसी को हटाने के लिए जहां "आंतरिक" "rates" एक खाली सरणी है। तो $pull . के भीतर "पथ" वास्तव में "products" . के अंदर देख रहा है सामग्री वैसे भी, इसलिए यह उसके सापेक्ष है और पूरे दस्तावेज़ से नहीं।

स्वाभाविक रूप से $pull एक ही ऑपरेशन में मेल खाने वाले सभी तत्वों को हटा देगा। "multi" इसकी आवश्यकता केवल तब होती है जब आप वास्तव में कथन के साथ एक से अधिक दस्तावेज़ों को अपडेट करना चाहते हैं




  1. Redis
  2.   
  3. MongoDB
  4.   
  5. Memcached
  6.   
  7. HBase
  8.   
  9. CouchDB
  1. Django mongoDB एटलस से कनेक्ट नहीं हो सकता

  2. मोंगोडब एटलस + नोड.जेएस स्थानीय रूप से काम कर रहा है लेकिन हेरोकू में धकेलने पर रुक जाता है

  3. MongoDB - सभी वस्तुओं को लूप किए बिना जावा में संग्रह की प्रतिलिपि बनाएँ

  4. मोंगो परिणाम से _id हटाएं

  5. मोंगो संग्रह के माध्यम से लूप करें और प्रत्येक दस्तावेज़ में एक फ़ील्ड अपडेट करें