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

Pembaruan MongoDB Banyak dengan Bersyarat

Anda benar-benar ingin bulkWrite() menggunakan dua "updateMany" pernyataan di dalamnya sebagai gantinya. Ekspresi agregasi tidak dapat digunakan untuk melakukan "pilihan alternatif" dalam bentuk pernyataan pembaruan apa pun.

db.country.bulkWrite([
  { "updateMany": {
    "filter": { "pop": { "$lt": 20000000 } },
    "update": { "$set": { "country": "Small Country" } }
  }},
  { "updateMany": {
    "filter": { "pop": { "$gt": 20000000 } },
    "update": { "$set": { "country": "Large Country" } } 
  }}
])

Masih ada "permintaan fitur" yang belum terselesaikan di SERVER-6566 untuk "sintaks bersyarat", tetapi ini belum diselesaikan. API "massal" sebenarnya diperkenalkan setelah permintaan ini diajukan, dan benar-benar dapat diadaptasi seperti yang ditunjukkan untuk melakukan kurang lebih hal yang sama.

Juga menggunakan $out dalam pernyataan agregasi seperti yang disarankan bukan merupakan opsi untuk "memperbarui" dan hanya dapat menulis ke "koleksi baru" saat ini. Perubahan yang dijadwalkan dari MongoDB 4.2 dan seterusnya akan memungkinkan $out untuk benar-benar "memperbarui" koleksi yang ada, namun ini hanya akan terjadi di mana koleksi yang akan diperbarui berbeda dari koleksi lain yang digunakan dalam pengumpulan data dari pipa agregasi. Jadi tidak mungkin untuk menggunakan alur agregasi untuk memperbarui yang sama koleksi seperti yang Anda baca.

Singkatnya, gunakan bulkWrite() .




  1. Redis
  2.   
  3. MongoDB
  4.   
  5. Memcached
  6.   
  7. HBase
  8.   
  9. CouchDB
  1. MongoDB - gerhana

  2. MongoDB tidak menangani agregasi dengan allowDiskUsage:True

  3. Mongo $addToSet sebuah Array

  4. Bagaimana cara memilih satu bidang di MongoDB menggunakan Pymongo?

  5. ArgumentException:Kata kunci 'mongodb+srv://test:[email protected]' tidak valid di MongoDB + Unity2D - Live MongoDB tidak terhubung