MongoDB
 sql >> Cơ Sở Dữ Liệu >  >> NoSQL >> MongoDB

Cập nhật nhiều tài liệu con qua Mongoose?

Giải pháp mà tôi có thể nghĩ đến là cập nhật từng tài liệu lồng nhau một.

Giả sử chúng ta đã nắm được các cụm từ bị cấm, đó là một chuỗi các chuỗi:

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

Sau đó, chúng tôi thực hiện truy vấn để tìm tất cả UserCommentscomments có chứa bất kỳ bannedPhrases .

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

Bằng cách sử dụng các hứa hẹn, chúng ta có thể thực hiện cập nhật không đồng bộ cùng nhau:

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

Nếu bạn sử dụng Bluebird JS là thư viện lời hứa của Mongoose, mã có thể được đơn giản hóa:

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. findOneAndUpdate gây ra sự cố trùng lặp

  2. Giao diện Mongo

  3. Tại sao và khi nào cần thiết phải xây dựng lại các chỉ mục trong MongoDB?

  4. Làm cách nào để loại trừ các trường khỏi tài liệu được nhúng trong Mongoid?

  5. Làm cách nào để liệt kê tất cả cơ sở dữ liệu MongoDB trong Node.js?