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

MongoDB cập nhật nhiều bản ghi của mảng

Bạn không thể sửa đổi nhiều phần tử mảng trong một thao tác cập nhật. Do đó, bạn sẽ phải lặp lại cập nhật để di chuyển các tài liệu cần sửa đổi nhiều phần tử mảng. Bạn có thể thực hiện việc này bằng cách lặp lại từng tài liệu trong bộ sưu tập, liên tục áp dụng bản cập nhật với $elemMatch cho đến khi tài liệu có tất cả các nhận xét liên quan được thay thế, ví dụ:

db.collection.find().forEach( function(doc) {
  do {
    db.collection.update({_id: doc._id,
                          comments:{$elemMatch:{user:"test",
                                                avatar:{$ne:"new_avatar.jpg"}}}},
                         {$set:{"comments.$.avatar":"new_avatar.jpg"}});
  } while (db.getPrevError().n != 0);
})

Lưu ý rằng nếu hiệu quả của thao tác này là một yêu cầu đối với ứng dụng của bạn, bạn nên chuẩn hóa lược đồ của mình sao cho vị trí của hình đại diện của người dùng được lưu trữ trong một tài liệu duy nhất, thay vì trong mọi nhận xét.



  1. Redis
  2.   
  3. MongoDB
  4.   
  5. Memcached
  6.   
  7. HBase
  8.   
  9. CouchDB
  1. Số lượng MongoDB

  2. Truy vấn cập nhật Mongo db không hoạt động trong các tài liệu được nhúng trong azure cosmos db

  3. Các trường tùy chọn của lược đồ Mongoose

  4. Tôi muốn truy xuất các giá trị được chèn vào ngày cụ thể bằng cách sử dụng _id of mongodb

  5. Loại bỏ các mục nhập mảng có chứa một mảng trống