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

Bản sao Chèn hàng loạt MongoDB

Một giải pháp thay thế là sử dụng bulk.find().upsert().replaceOne() thay vào đó:

MongoClient.connect(mongoURL, function(err, db) {
    if(err) console.err(err)
    let col = db.collection('user_ids')
    let batch = col.initializeUnorderedBulkOp()

    ids.forEach(function(id) {        
        batch.find({ userid: id }).upsert().replaceOne({ 
            userid: id, 
            used: false,  
            group: argv.groupID 
        });
    });

    batch.execute(function(err, result) {
        if(err) {
            console.error(new Error(err))
            db.close()
        }

        // Do some work

        db.close()
    });
});

Với những điều trên, nếu tài liệu khớp với truy vấn { userid: id } nó sẽ được thay thế bằng tài liệu mới, nếu không nó sẽ được tạo do đó Không có lỗi khóa trùng lặp nào được đưa ra.

Đối với máy chủ MongoDB phiên bản 3.2+, hãy sử dụng bulkWrite như:

MongoClient.connect(mongoURL, function(err, db) {

    if(err) console.err(err)

    let col = db.collection('user_ids')
    let ops = []
    let counter = 0

    ids.forEach(function(id) {
        ops.push({
            "replaceOne": {
                "filter": { "userid": id },
                "replacement": { 
                    userid: id, 
                    used: false,  
                    group: argv.groupID 
                },
                "upsert": true
            }
        })

        counter++

        if (counter % 500 === 0) {
            col.bulkWrite(ops, function(err, r) {
                // do something with result
                db.close()
            })
            ops = []
        }
    })

    if (counter % 500 !== 0) {
        col.bulkWrite(ops, function(err, r) {
            // do something with result
            db.close()
        }
    } 
})



  1. Redis
  2.   
  3. MongoDB
  4.   
  5. Memcached
  6.   
  7. HBase
  8.   
  9. CouchDB
  1. Làm cách nào để trích xuất dấu thời gian từ MongoDB ObjectId trong Spring Data MongoDB?

  2. MongoDB Nhiều bậc thầy trong ReplicaSet

  3. lấy giá trị bằng tên khóa mongodb node.js trình điều khiển

  4. Làm cách nào để ghi vào đêm trước vào các cơ sở dữ liệu khác nhau dựa trên các tham số URL và giá trị yêu cầu khác nhau?

  5. Truy vấn phạm vi cho phân trang MongoDB