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

नेवला के माध्यम से एक से अधिक उप-दस्तावेजों को अद्यतन कर रहा है?

मैं जिस समाधान के बारे में सोच सकता हूं वह है नेस्टेड दस्तावेज़ को एक-एक करके अपडेट करना।

मान लें कि हमने प्रतिबंधित वाक्यांशों को पकड़ लिया है, जो स्ट्रिंग्स की एक सरणी है:

var bannedPhrases = ["censorship", "evil"]; // and more ...

फिर हम सभी UserComments . को खोजने के लिए एक क्वेरी करते हैं जिसमें comments है जिसमें कोई भी bannedPhrases . हो ।

UserComments.find({"comments.comment": {$in: bannedPhrases }});

वादों का उपयोग करके, हम एक साथ अतुल्यकालिक रूप से अपडेट कर सकते हैं:

UserComments.find({"comments.comment": {$in: bannedPhrases }}, {"comments.comment": 1})
  .then(function(results){
    return results.map(function(userComment){

       userComment.comments.forEach(function(commentContainer){
         // Check if this comment contains banned phrases
         if(bannedPhrases.indexOf(commentContainer.comment) >= 0) {
           commentContainer.isHidden = true;
         }
       });

       return userComment.save();
    });
  }).then(function(promises){
     // This step may vary depending on which promise library you are using
     return Promise.all(promises); 
  });

यदि आप ब्लूबर्ड JS का उपयोग करते हैं नेवला का वादा पुस्तकालय है, कोड को सरल बनाया जा सकता है:

UserComments.find({"comments.comment": {$in: bannedPhrases}}, {"comments.comment": 1})
    .exec()
    .map(function (userComment) {

        userComment.comments.forEach(function (commentContainer) {
            // Check if this comment contains banned phrases
            if (bannedPhrases.indexOf(commentContainer.comment) >= 0) {
                commentContainer.isHidden = true;
            }
        });

        return userComment.save();
    }).then(function () {
    // Done saving
});


  1. Redis
  2.   
  3. MongoDB
  4.   
  5. Memcached
  6.   
  7. HBase
  8.   
  9. CouchDB
  1. $arrayElemAt . के साथ लौटाया गया एक तत्व प्रोजेक्ट करें

  2. जावा पर पीडीआई केटल चलाना - मोंगोडब स्टेप मिसिंग प्लगइन्स

  3. मोंगोडीबी को लिखने के लिए जेसन स्ट्रिंग को बीएसओएन दस्तावेज़ में कैसे मार्शल करें?

  4. MongoDB:initAndListen में अपवाद:20 केवल-पढ़ने के लिए निर्देशिका पर लॉक फ़ाइल बनाने का प्रयास किया गया:/डेटा/डीबी, समाप्त हो रहा है

  5. findOneAndUpdate दोहराव की समस्या पैदा कर रहा है