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

MongoDB:Perbarui/Upsert vs Sisipkan

Jika Anda memasukkan dokumen, MongoDB perlu memeriksa apakah dokumen dengan ObjectId yang sama ada atau tidak. Jika ada, dokumen tidak dapat dimasukkan.

Kasus yang sama berlaku untuk Pembaruan. Itu perlu untuk memeriksa apakah dokumen itu ada atau tidak. Jika tidak, pembaruan tidak dapat dilakukan. Kasus di mana kueri pembaruan Anda akan melambat adalah ketika tidak dapat menemukan dokumen berdasarkan bidang ObjectId / terindeks Anda.

Jika tidak, kinerja untuk memasukkan/memperbarui dokumen harus sama.

Jadi Insertnya bisa seperti ini //(Cepat)

  1. (Periksa dokumen -> Tidak Ditemukan -> Sisipkan dokumen baru) Lain
  2. (Periksa dokumen -> Ditemukan -> Tidak dapat disisipkan)

Dan Perbarui dengan upsert (ObjectId tersedia) //(Cepat)

  1. (Periksa dokumen -> Tidak Ditemukan -> Sisipkan dokumen baru) Lain
  2. (Periksa dokumen -> Ditemukan -> Perbarui dokumen)

Atau Perbarui dengan upsert (Tanpa ObjectId) //Ini lambat

  1. (Temukan ObjectIds (Lambat) -> Tidak Ditemukan -> Sisipkan dokumen baru) Lain
  2. (Temukan ObjectIds (Lambat)-> Ditemukan -> Perbarui dokumen)


  1. Redis
  2.   
  3. MongoDB
  4.   
  5. Memcached
  6.   
  7. HBase
  8.   
  9. CouchDB
  1. Meteor memakan banyak koneksi Mongo

  2. Temukan postingan terbaru &terdekat, batasi 20

  3. Urutan tanggapan ke MongoDB $ dalam kueri?

  4. Sesi mongodb sesi ekspres tidak bertahan

  5. MongoDB:mengapa find dan findOne hanya mengembalikan elemen array terakhir?