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

मोंगोडब में कई क्षेत्रों पर $ अनसेट

मोंगोडीबी संस्करण पर>=3.2 :

आप .bulkWrite() . का लाभ उठा सकते हैं :

let bulkArr = [
  {
    updateMany: {
      filter: { name: null },
      update: { $unset: { name: 1 } }
    }
  },
  {
    updateMany: {
      filter: { Roll_no: null },
      update: { $unset: { Roll_no: 1 } }
    }
  },
  {
    updateMany: {
      filter: { hobby: null },
      update: { $unset: { hobby: 1 } }
    }
  },
];

/** All filter conditions will be executed on all docs
 *  but respective update operation will only be executed if respective filter matches (kind of individual ops) */
db.collection.bulkWrite(bulkArr);

संदर्भ : बल्कराइट

मोंगोडीबी संस्करण पर>=4.2 :

चूंकि आप null वाले कई फ़ील्ड (जहां फ़ील्ड नाम नीचे सूचीबद्ध या अज्ञात नहीं हो सकते) को हटाना चाहते थे मान, क्वेरी के नीचे आज़माएं:

db.collection.update(
  {}, // Try to use a filter if possible
  [
    /** 
     * using project as first stage in aggregation-pipeline
     * Iterate on keys/fields of document & remove fields where their value is 'null'
     */
    {
      $project: {
        doc: {
          $arrayToObject: { $filter: { input: { $objectToArray: "$$ROOT" }, cond: { $ne: ["$$this.v", null] } } }
        }
      }
    },
    /** Replace 'doc' object as root of document */
    {
      $replaceRoot: { newRoot: "$doc" }
    }
  ],
  { multi: true }
);

परीक्षा : मोंगोप्लेग्राउंड

संदर्भ : अद्यतन-के-एक-एकत्रीकरण-पाइपलाइन , एकत्रीकरण-पाइपलाइन

नोट :

मेरा मानना ​​है कि यह एक बार का ऑपरेशन होगा और भविष्य में आप Joi . का उपयोग कर सकते हैं npm पैकेज या नेवला स्कीमा सत्यापनकर्ता लेखन को प्रतिबंधित करने के लिए null फ़ील्ड मान के रूप में है। यदि आप अपने फ़ील्ड नामों को सूचीबद्ध कर सकते हैं जैसे कि बहुत अधिक प्लस डेटासेट आकार बहुत अधिक नहीं है तो $$REMOVE के साथ एकत्रीकरण का उपयोग करने का प्रयास करें जैसा कि '@thammada' ने सुझाया है।

अभी तक, .updateMany() . में एग्रीगेशन-पाइपलाइन कई ग्राहकों द्वारा समर्थित नहीं है, यहां तक ​​​​कि कुछ मोंगो शैल संस्करण भी - वापस तो मेरा टिकट .update() का उपयोग करके हल हो गया है , अगर यह काम नहीं करता है तो update + { multi : true } का उपयोग करने का प्रयास करें ।



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

  2. मोंगोडब मानदंड से मेल खाने वाली सभी वस्तुओं में सभी सरणी तत्वों की गणना करता है

  3. Mongo ObjectId को क्रमबद्ध करते समय JSON.NET ने त्रुटि डाली:

  4. Mongodb आज की तारीख के अनुसार बनाए गए परिणाम खोजें

  5. नोड.जेएस में प्रतिक्रिया व्यक्त करने के लिए एक मोंगोडब कर्सर से स्ट्रीम करें