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

Nilai default tidak disetel saat menggunakan Perbarui dengan Upsert sebagai benar

Untuk menambahkan default ke dokumen Anda jika dibuat dengan findOneAndUpdate (tidak ada sebelum kueri) dan Anda tidak menyediakan bidang dalam pembaruan, Anda harus menggunakan setDefaultsOnInsert .

Saat upsert dan setDefaultsOnInsert keduanya true , default akan ditetapkan jika catatan tidak ditemukan dan yang baru dibuat. Ini melewatkan alur kerja karena harus memeriksa apakah catatan ada dan jika tidak, buat yang baru dengan 'simpan' hanya untuk memastikan default disetel .

Saya memiliki masalah yang sama (rekaman dibuat dengan findOneAndUpdate dengan upsert: true ) dan nilai default untuk bidang tidak ditambahkan ke catatan, meskipun ada dalam skema. Ini hanya terkait dengan menambahkan default saat menggunakan findOneAndUpdate untuk membuat dokumen, bukan untuk melewatkan pembaruan bidang 'dibuat'.

misalnya

User.findOneAndUpdate({email: user.email}, user, {upsert: true, setDefaultsOnInsert:true}, ...)


  1. Redis
  2.   
  3. MongoDB
  4.   
  5. Memcached
  6.   
  7. HBase
  8.   
  9. CouchDB
  1. Bagaimana cara mendapatkan nomor versi MongoDB di Heroku?

  2. Driver Node Asli MongoDB:Jelaskan Rusak?

  3. Kesalahan Janji Luwak

  4. Mongodb v4.0 Transaction, MongoError:Nomor transaksi hanya diperbolehkan pada anggota kumpulan replika atau mongo

  5. OpenShift Mengakses Pod Mongodb dari Pod lain