MongoDB
 sql >> Teknologi Basis Data >  >> NoSQL >> MongoDB

Memperbarui beberapa sub-dokumen melalui Mongoose?

Solusi yang dapat saya pikirkan adalah memperbarui dokumen bersarang satu per satu.

Asumsikan kita memiliki frasa terlarang, yang merupakan larik string:

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

Kemudian kami melakukan kueri untuk menemukan semua UserComments yang memiliki comments yang berisi salah satu bannedPhrases .

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

Dengan menggunakan janji, kami dapat melakukan pembaruan secara asinkron bersama:

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

Jika Anda menggunakan Bluebird JS adalah perpustakaan janji Mongoose, kodenya dapat disederhanakan:

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. Aplikasi berfungsi dalam pengembangan tetapi tidak saat digunakan ke heroku

  2. Pulihkan Basis Data MongoDB menggunakan mongorestore

  3. apakah ada panggilan balik kesalahan koneksi luwak?

  4. String Koneksi di MongoDB (dengan contoh)

  5. Bagaimana saya bisa menginstal dua versi mongodb secara paralel di Ubuntu 12.04?