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

4 Cara Memperbarui Dokumen di MongoDB

MongoDB menyediakan berbagai cara untuk memperbarui dokumen. Metode yang Anda gunakan akan bergantung pada bagaimana Anda ingin melakukan pembaruan.

Artikel ini menyajikan 4 cara untuk memperbarui dokumen di MongoDB.

The db.collection.updateOne() Metode

db.collection.updateOne() metode melakukan persis seperti yang dijanjikan namanya – ia memperbarui satu dokumen.

Misalkan kita memiliki koleksi yang disebut pets yang berisi dokumen-dokumen berikut:

{ "_id" : 1, "name" : "Wag", "type" : "Dog" }
{ "_id" : 2, "name" : "Bark", "type" : "Dog" }
{ "_id" : 3, "name" : "Meow", "type" : "Cat" }

Kami dapat memperbarui satu dokumen seperti ini:

db.pets.updateOne( 
    { type: "Dog" },
    { $set: { type: "Cow" } }
    )

Hasil:

{ "acknowledged" : true, "matchedCount" : 1, "modifiedCount" : 1 }

Itu hanya memperbarui satu dokumen, meskipun dua dokumen cocok dengan kriteria filter (kriterianya adalah type: "Dog" ).

Kita bisa cek hasilnya seperti ini:

db.pets.find()

Hasil:

{ "_id" : 1, "name" : "Wag", "type" : "Cow" }
{ "_id" : 2, "name" : "Bark", "type" : "Dog" }
{ "_id" : 3, "name" : "Meow", "type" : "Cat" }

Dokumen pertama sekarang memiliki type dari Cow bukannya Dog , tetapi dokumen kedua tidak terpengaruh, meskipun juga cocok dengan kriteria pemfilteran.

The db.collection.updateMany() Metode

db.collection.updateMany() metode memperbarui semua dokumen yang cocok dengan filter yang ditentukan untuk koleksi.

Mari gunakan dokumen koleksi asli:

{ "_id" : 1, "name" : "Wag", "type" : "Dog" }
{ "_id" : 2, "name" : "Bark", "type" : "Dog" }
{ "_id" : 3, "name" : "Meow", "type" : "Cat" }

Sekali lagi, kita dapat melihat bahwa dua dokumen memiliki Dog sebagai type .

Kami dapat memperbarui kedua dokumen sekaligus seperti ini:

db.pets.updateMany( 
    { type: "Dog" },
    { $set: { type: "Cow" } }
    )

Hasil:

{ "acknowledged" : true, "matchedCount" : 2, "modifiedCount" : 2 }

Ini menunjukkan kepada kita bahwa dua dokumen cocok dan dua telah diperbarui.

Kita bisa cek koleksinya:

db.pets.find()

Hasil:

{ "_id" : 1, "name" : "Wag", "type" : "Cow" }
{ "_id" : 2, "name" : "Bark", "type" : "Cow" }
{ "_id" : 3, "name" : "Meow", "type" : "Cat" }

The db.collection.update() Metode

db.collection.update() metode dapat memperbarui satu dokumen atau beberapa dokumen dalam satu koleksi.

Secara default, ini hanya memperbarui satu dokumen. Tetapi jika multi: true ditentukan, kemudian memperbarui semua dokumen yang cocok dengan kriteria kueri.

Memperbarui Satu Dokumen

Mari gunakan kembali koleksi dokumen asli:

{ "_id" : 1, "name" : "Wag", "type" : "Dog" }
{ "_id" : 2, "name" : "Bark", "type" : "Dog" }
{ "_id" : 3, "name" : "Meow", "type" : "Cat" }

Kami dapat memperbarui satu dokumen seperti ini:

db.pets.update( 
    { type: "Dog" },
    { $set: { type: "Cow" } }
    )

Hasil:

WriteResult({ "nMatched" : 1, "nUpserted" : 0, "nModified" : 1 })

Hanya satu dokumen yang diperbarui. Ini dikonfirmasi saat kami menanyakan koleksi.

db.pets.find()

Hasil:

{ "_id" : 1, "name" : "Wag", "type" : "Cow" }
{ "_id" : 2, "name" : "Bark", "type" : "Dog" }
{ "_id" : 3, "name" : "Meow", "type" : "Cat" }

Perbarui Banyak Dokumen

Mari kembali ke kumpulan dokumen asli lagi:

{ "_id" : 1, "name" : "Wag", "type" : "Dog" }
{ "_id" : 2, "name" : "Bark", "type" : "Dog" }
{ "_id" : 3, "name" : "Meow", "type" : "Cat" }

Dan sekarang kita akan menambahkan multi: true ke operasi pembaruan kami untuk memperbarui semua dokumen yang cocok dengan kriteria kueri:

db.pets.update( 
    { type: "Dog" },
    { $set: { type: "Cow" } },
    { multi: true }
    )

Hasil:

WriteResult({ "nMatched" : 2, "nUpserted" : 0, "nModified" : 2 }) 

Jadi dua dokumen dicocokkan dan diperbarui kali ini.

Mari kita lihat kembali koleksi kita:

db.pets.find()

Hasil:

{ "_id" : 1, "name" : "Wag", "type" : "Cow" }
{ "_id" : 2, "name" : "Bark", "type" : "Cow" }
{ "_id" : 3, "name" : "Meow", "type" : "Cat" }

Seperti yang diharapkan, kedua dokumen sekarang memiliki type dari Cow .

The db.collection.replaceOne() Metode

db.collection.replaceOne() metode menggantikan satu dokumen dalam koleksi berdasarkan filter.

Sekali lagi menggunakan koleksi asli:

{ "_id" : 1, "name" : "Wag", "type" : "Dog" }
{ "_id" : 2, "name" : "Bark", "type" : "Dog" }
{ "_id" : 3, "name" : "Meow", "type" : "Cat" }

Mari kita lihat apa yang terjadi ketika kita menggunakan db.collection.replaceOne() metode melawannya.

db.pets.replaceOne( 
    { type: "Dog" },
    { type: "Cow" }
    )

Hasil:

{ "acknowledged" : true, "matchedCount" : 1, "modifiedCount" : 1 }

Satu dokumen telah diperbarui.

Mari kita lihat.

db.pets.find()

Hasil:

{ "_id" : 1, "type" : "Cow" }
{ "_id" : 2, "name" : "Bark", "type" : "Dog" }
{ "_id" : 3, "name" : "Meow", "type" : "Cat" }

Kali ini, seluruh dokumen diganti dengan dokumen baru (kecuali _id bidang).

Metode ini menggantikan seluruh dokumen (kecuali untuk _id lapangan).

Upser

Semua metode di atas menerima upsert argumen yang memungkinkan Anda untuk melakukan operasi upsert.

Ketika upsert: true , dokumen diperbarui jika ada kecocokan dengan kriteria kueri, tetapi jika tidak ada kecocokan, dokumen baru dimasukkan.

Contoh:

db.pets.updateOne( 
    { name: "Wag" },
    { $set: { type: "Cow" } },
    { upsert: true }
    )

Hasil:

{
	"acknowledged" : true,
	"matchedCount" : 0,
	"modifiedCount" : 0,
	"upsertedId" : ObjectId("5fe1d5aad991410169410165")
}

Dalam hal ini, tidak ada kecocokan, sehingga dokumen dimasukkan.

Yuk cek koleksinya.

db.pets.find()

Hasil:

{ "_id" : 1, "type" : "Cow" }
{ "_id" : 2, "name" : "Bark", "type" : "Dog" }
{ "_id" : 3, "name" : "Meow", "type" : "Cat" }
{ "_id" : ObjectId("5fe1d5aad991410169410165"), "name" : "Wag", "type" : "Cow" }

  1. Redis
  2.   
  3. MongoDB
  4.   
  5. Memcached
  6.   
  7. HBase
  8.   
  9. CouchDB
  1. Tidak dapat membuat indeks di mongodb, kunci terlalu besar untuk diindeks

  2. 3 Cara Mengembalikan Nilai Berbeda di MongoDB

  3. Mencatat Kueri MongoDB dengan Spring Boot

  4. java.lang.NoClassDefFoundError saat menggunakan driver MongoDB

  5. Memperbarui jalur 'x' akan membuat konflik di 'x'