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

Pembaruan Massal Dokumen di MongoDB

1. Ikhtisar

Dalam tutorial ini, kita akan melihat melakukan pembaruan massal dan menyisipkan operasi di MongoDB. Selain itu, MongoDB menyediakan panggilan API yang memungkinkan penyisipan atau pengambilan beberapa dokumen dalam satu operasi. MongoDB menggunakan Array atau Batch antarmuka yang sangat meningkatkan kinerja database dengan mengurangi jumlah panggilan antara klien dan database.

Dalam tutorial ini, kita akan melihat kedua solusi menggunakan kode driver MongoDB Shell dan Java.

Mari selami penerapan pembaruan massal dokumen di MongoDB.

2. Inisialisasi Basis Data

Pertama-tama, kita perlu terhubung ke shell mongo:

mongo --host localhost --port 27017

Sekarang, siapkan database baeldung dan koleksi sampel populasi :

use baeldung;
db.createCollection(populations);

Mari tambahkan beberapa contoh data ke dalam koleksi populasi menggunakan insertMany metode:

db.populations.insertMany([
{
    "cityId":1124,
    "cityName":"New York",
    "countryName":"United States",
    "continentName":"North America",
    "population":22
},
{
    "cityId":1125,
    "cityName":"Mexico City",
    "countryName":"Mexico",
    "continentName":"North America",
    "population":25
},
{
    "cityId":1126,
    "cityName":"New Delhi",
    "countryName":"India",
    "continentName":"Asia",
    "population":45
},
{
    "cityId":1134,
    "cityName":"London",
    "countryName":"England",
    "continentName":"Europe",
    "population":32
}]);

insertMany di atas query akan mengembalikan dokumen berikut:

{
    "acknowledged" : true,
    "insertedIds" : [
        ObjectId("623575049d55d4e137e477f6"),
        ObjectId("623575049d55d4e137e477f7"),
        ObjectId("623575049d55d4e137e477f8"),
        ObjectId("623575049d55d4e137e477f9")
    ]
}

Di sini, kami memasukkan empat dokumen dalam kueri di atas untuk melakukan semua jenis operasi tulis massal di MongoDB.

Basis data baeldung telah berhasil dibuat, dan semua data yang diperlukan juga dimasukkan ke dalam kumpulan populasi , jadi kami siap untuk melakukan pembaruan massal.

3. Menggunakan MongoDB Shell Query

Pembangun operasi massal MongoDB digunakan untuk membuat daftar operasi penulisan secara massal untuk satu koleksi. Kita dapat menginisialisasi operasi massal dengan 2 cara berbeda. Metode initializeOrderedBulkOp digunakan untuk melakukan operasi massal dalam daftar perintah operasi tulis. Salah satu kelemahan initializeOrderedBulkOp adalah jika terjadi kesalahan saat memproses operasi penulisan apa pun, MongoDB akan kembali tanpa memproses operasi penulisan yang tersisa dalam daftar.

Kita dapat menggunakan metode insert, update, replace, dan remove untuk melakukan berbagai jenis operasi dalam satu panggilan DB. Sebagai ilustrasi, mari kita lihat kueri operasi penulisan massal menggunakan shell MongoDB:

db.populations.bulkWrite([
    { 
        insertOne :
            { 
                "document" :
                    {
                        "cityId":1128,
                        "cityName":"Kathmandu",
                        "countryName":"Nepal",
                        "continentName":"Asia",
                        "population":12
                    }
            }
    },
    { 
        insertOne :
            { 
                "document" :
                    {
                        "cityId":1130,
                        "cityName":"Mumbai",
                        "countryName":"India",
                        "continentName":"Asia",
                        "population":55
                    }
            }
    },
    { 
        updateOne :
            { 
                "filter" : 
                     { 
                         "cityName": "New Delhi"
                     },
                 "update" : 
                     { 
                         $set : 
                         { 
                             "status" : "High Population"
                         } 
                     }
            }
    },
    { 
        updateMany :
            { 
                "filter" : 
                     { 
                         "cityName": "London"
                     },
                 "update" : 
                     { 
                         $set : 
                         { 
                             "status" : "Low Population"
                         } 
                     }
            }
    },
    { 
        deleteOne :
            { 
                "filter" : 
                    { 
                        "cityName":"Mexico City"
                    } 
            }
    },
    { 
        replaceOne :
            {
                "filter" : 
                    { 
                        "cityName":"New York"
                    },
                 "replacement" : 
                    {
                        "cityId":1124,
                        "cityName":"New York",
                        "countryName":"United States",
                        "continentName":"North America",
                        "population":28
                    }
             }
    }
]);

bulkWrite di atas query akan mengembalikan dokumen berikut:

{
    "acknowledged" : true,
    "deletedCount" : 1,
    "insertedCount" : 2,
    "matchedCount" : 3,
    "upsertedCount" : 0,
    "insertedIds" : 
        {
            "0" : ObjectId("623575f89d55d4e137e477f9"),
            "1" : ObjectId("623575f89d55d4e137e477fa")
        },
    "upsertedIds" : {}
}

Di sini, dalam kueri di atas, kami melakukan semua jenis operasi tulis, yaitu insertOne , updateOne , hapusSatu , gantiSatu .

Pertama, kami menggunakan insertOne metode untuk memasukkan dokumen baru ke dalam koleksi. Kedua, kami menggunakan updateOne untuk memperbarui dokumen cityName "New Delhi". Kemudian, kami menggunakan deleteOne metode untuk menghapus dokumen dari koleksi berdasarkan filter. Terakhir, kami menggunakan replaceOne  untuk mengganti dokumen lengkap dengan filter cityName “New York”.

4. Menggunakan Driver Java

Kami telah membahas kueri shell MongoDB untuk melakukan operasi penulisan massal. Sebelum membuat operasi penulisan massal, pertama-tama buat MongoClient hubungan dengan koleksi populasi dari database baeldung :

MongoClient mongoClient = new MongoClient("localhost", 27017);
MongoDatabase database = mongoClient.getDatabase("baeldung");
MongoCollection<Document> collection = database.getCollection("populations");

Di sini, kami membuat koneksi dengan server MongoDB, yang berjalan pada port default 27017. Sekarang mari kita terapkan operasi massal yang sama menggunakan kode Java:

List<WriteModel<Document>> writeOperations = new ArrayList<WriteModel<Document>>();
writeOperations.add(new InsertOneModel<Document>(new Document("cityId", 1128)
  .append("cityName", "Kathmandu")
  .append("countryName", "Nepal")
  .append("continentName", "Asia")
  .append("population", 12)));
writeOperations.add(new InsertOneModel<Document>(new Document("cityId", 1130)
  .append("cityName", "Mumbai")
  .append("countryName", "India")
  .append("continentName", "Asia")
  .append("population", 55)));
writeOperations.add(new UpdateOneModel<Document>(new Document("cityName", "New Delhi"),
  new Document("$set", new Document("status", "High Population"))
));
writeOperations.add(new UpdateManyModel<Document>(new Document("cityName", "London"),
  new Document("$set", new Document("status", "Low Population"))
));
writeOperations.add(new DeleteOneModel<Document>(new Document("cityName", "Mexico City")));
writeOperations.add(new ReplaceOneModel<Document>(new Document("cityId", 1124), 
  new Document("cityName", "New York").append("cityName", "United States")
    .append("continentName", "North America")
    .append("population", 28)));
BulkWriteResult bulkWriteResult = collection.bulkWrite(writeOperations);
System.out.println("bulkWriteResult:- " + bulkWriteResult);

Di sini, pertama-tama kita membuat daftar writeModel untuk menambahkan semua jenis operasi tulis yang berbeda ke dalam satu daftar pembaruan. Selanjutnya, kami menggunakan InsertOneModel , UpdateOneModel , UpdateManyModel , HapusOneModel , dan ReplaceOneModel dalam kueri kami. Terakhir, bulkWrite metode mengeksekusi semua operasi sekaligus.


  1. Redis
  2.   
  3. MongoDB
  4.   
  5. Memcached
  6.   
  7. HBase
  8.   
  9. CouchDB
  1. MongoDB countDocuments()

  2. Membandingkan Kinerja MongoDB di Cloud Publik:AWS, Azure &DigitalOcean

  3. Memantau Instans MongoDB Menggunakan MongoDB Monitoring Service (MMS)

  4. Bagaimana saya bisa memeriksa apakah ada bidang atau tidak di MongoDB?

  5. Pengikisan dan Perayapan Web dengan Scrapy dan MongoDB