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

Cách thực hiện đúng cách nâng cấp / cập nhật hàng loạt trong MongoDB

Cú pháp của bạn ở đây về cơ bản là đúng, nhưng thực thi chung của bạn đã sai và bạn nên "tách biệt" hành động "upsert" khỏi các sửa đổi khác. Nếu không, những điều này sẽ "xung đột" và tạo ra lỗi khi xảy ra "upert":

LineupPointsRecord.native(function (err,collection) {

    var bulk = collection.initializeOrderedBulkOp();

    // Match and update only. Do not attempt upsert
    bulk.find({
        "teamId": lineUpPointsGeneralRecord.teamId,
        "round": 0
    }).updateOne({
        "$inc": { "lfPoints": roundPoints },
        "$push": { "roundPoints": roundPoints }
    });

    // Attempt upsert with $setOnInsert only
    bulk.find({
        "teamId": lineUpPointsGeneralRecord.teamId,
        "round": 0
    }).upsert().updateOne({
        "$setOnInsert": lineUpPointsGeneralRecord
    });

    bulk.execute(function (err,updateResult) {
        sails.log.debug(err,updateResult);
    });
});

Đảm bảo sails-mongo của bạn là phiên bản mới nhất hỗ trợ các hoạt động Bulk đúng cách, bao gồm một trình điều khiển gốc của nút gần đây. Gần đây nhất hỗ trợ trình điều khiển v2, điều này tốt cho việc này.



  1. Redis
  2.   
  3. MongoDB
  4.   
  5. Memcached
  6.   
  7. HBase
  8.   
  9. CouchDB
  1. Mongodb không thể chạy bản đồ giảm mà không có công cụ js

  2. MongoCommandException:Lệnh không thành công với lỗi 8000 (AtlasError):'không có tên SNI nào được gửi, hãy đảm bảo sử dụng trình điều khiển / trình bao MongoDB 3.4+.'

  3. Tra cứu MongoDB khi trường nước ngoài là một mảng

  4. MongoDB:kiểm tra kết nối với DB

  5. Thiết kế mối quan hệ Nhiều-Nhiều trong MongoDB (thay vì bảng quan hệ)