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

Cập nhật nhiều tài liệu trong mongoDB với các giá trị khác nhau

Tốt nhất bạn nên thực hiện cập nhật này bằng cách sử dụng bulkWrite API. Hãy xem xét ví dụ sau cho hai tài liệu trên:

var bulkUpdateOps = [
    {
        "updateOne": {
            "filter": { "reference": 10 },
            "update": { "$push": { "history": history1 } }
        }
    },
    {
        "updateOne": {
            "filter": { "reference": 20 },
            "update": { "$push": { "history": history2 } }
        }
    }
];

mongo.financeCollection.bulkWrite(bulkUpdateOps, 
    {"ordered": true, "w": 1}, function(err, result) {
        // do something with result
        callback(err); 
    }

{"ordered": true, "w": 1} đảm bảo rằng các tài liệu sẽ được cập nhật tuần tự trên máy chủ, theo thứ tự được cung cấp và do đó nếu có lỗi xảy ra, tất cả các bản cập nhật còn lại sẽ bị hủy bỏ. {"w": 1} tùy chọn xác định mối quan tâm ghi với 1 là xác nhận yêu cầu rằng thao tác ghi đã truyền đến mongod độc lập hoặc chính trong một tập hợp bản sao.

Đối với MongoDB >= 2.6<= 3.0 , sử dụng API hoạt động hàng loạt như sau:

var bulkUpdateOps = mongo.financeCollection.initializeOrderedBulkOp();
bulkUpdateOps
    .find({ "reference": 10 })
    .updateOne({
        "$push": { "history": history1 }
    });
bulkUpdateOps
    .find({ "reference": 20 })
    .updateOne({
        "$push": { "history": history2 }
    });

bulk.execute(function(err, result){
    bulkUpdateOps = mongo.financeCollection.initializeOrderedBulkOp();
    // do something with result
    callback(err);
});



  1. Redis
  2.   
  3. MongoDB
  4.   
  5. Memcached
  6.   
  7. HBase
  8.   
  9. CouchDB
  1. DateTime với MongoDB / Mongoid và Rails 3 Không phổ biến

  2. Spring mongodb lấy ID của mục đã chèn sau khi Lưu

  3. Tạo các Lược đồ Mongoose có hoặc không có từ khóa 'mới'?

  4. Cách mongoexport với một trường

  5. Lỗi đặt tên bộ sưu tập Mongoose?