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

Cari dan ganti di Mongodb?

Tidak persis, dan maksud saya jika Anda tidak mencari "string yang tepat" dan ingin selalu mengganti dengan string yang "sama" yang berbeda.

Pada dasarnya sepertinya Anda mencari "penggantian regex" untuk dokumen yang dapat dilakukan melalui .update() . Meskipun dimungkinkan untuk $regex pencarian, tidak ada "tangkap" atau opsi untuk memasukkan bagian yang diambil ke bagian "perbarui" dari pernyataan seperti $set .

Jadi untuk melakukan pembaruan semacam ini, Anda perlu mengulang dokumen Anda dan memodifikasi kode. Tetapi API Operasi Massal dapat membantu di sini:

var bulk = db.collection.initializeOrderedBulkOp();
var counter = 0;

var query = { "url": { "$regex": "^http://example\.com" }};
db.collection.find(query).forEach(function(doc) {

    // Inspect and replace the part of the string
    bulk.find({ "_id": doc._id }).updateOne(
        { "$set": { "url": doc.url.replace("example.com","bucket.aws.com") } }
    );
    counter++;

    // Update once every 1000 documents
    if ( counter % 1000 == 0 ) {
        bulk.execute();
        bulk = db.collection.initializeOrderedBulkOp();
    }

})

// Process any remaining
if ( counter % 1000 != 0 )
    bulk.execute();

Sehingga masih memerlukan perulangan namun setidaknya update hanya dikirimkan ke server sekali setiap 1000 dokumen diproses.



  1. Redis
  2.   
  3. MongoDB
  4.   
  5. Memcached
  6.   
  7. HBase
  8.   
  9. CouchDB
  1. Apakah memperpendek nama properti MongoDB bermanfaat?

  2. Konversikan objek pengembalian mongodb ke kamus

  3. mongo db (mongodb.service) gagal, status 14

  4. Ekspor hasil kerangka kerja agregasi mongodb ke koleksi baru

  5. bagaimana cara mongoimport data ke aplikasi meteor yang digunakan?