MongoDB
 sql >> база данни >  >> NoSQL >> MongoDB

Актуализиране на множество поддокументи чрез Mongoose?

Решението, за което се сещам, е да актуализирам вложените документи един по един.

Да приемем, че сме се сдобили със забранените фрази, които представляват масив от низове:

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); 
  });

Ако използвате Bluebird JS е обещаващата библиотека на Mongoose, кодът може да бъде опростен:

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. MongoDb сортира колекция по брой в друга колекция

  2. Връщане на масив от поддокументи чрез Meteor / Mongo

  3. Mongo C# JSON четецът очакваше стойност, но намери „replSetGetStatus“

  4. MongoDB като услуга на Windows и настройка на replicaSet

  5. Как да изпратите множество документи с помощта на RMongo