MongoDB
 sql >> Teknologi Basis Data >  >> NoSQL >> MongoDB

Sisipan Massal MongoDB Abaikan Duplikat

Alternatifnya adalah menggunakan bulk.find().upsert().replaceOne() sebagai gantinya:

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

Dengan di atas, jika dokumen cocok dengan kueri { userid: id } itu akan diganti dengan dokumen baru, jika tidak maka akan dibuat sehingga tidak ada kesalahan kunci duplikat yang dilemparkan.

Untuk server MongoDB versi 3.2+, gunakan bulkWrite sebagai:

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. pilihan berbeda dalam lithium

  2. pencarian elastis vs. MongoDB untuk memfilter aplikasi

  3. Menganalisis Kueri Lambat di MongoDB

  4. Mengapa arah indeks penting di MongoDB?

  5. Saatnya tinggal di mongodb, luwak tidak bekerja. Dokumen tidak terhapus