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

Nama bidang dokumen tidak boleh diawali dengan '$' (Kunci Buruk:'$set')

Anda seharusnya tidak memiliki { "orgId" : 2 } dalam dokumen pembaruan.

Hapus baris ini dari kode dan itu akan berfungsi dengan baik.

u.append("orgId", orgId);

Alasan Anda memicu kesalahan adalah karena ada dua cara untuk menentukan pembaruan untuk dokumen dan Anda membuat roti silang dari keduanya. Pilihannya adalah:

  1. Berikan dokumen lengkap untuk pembaruan. Untuk model ini dokumen yang ada ditimpa oleh dokumen yang disediakan.
  2. Menggunakan operator pembaruan untuk memodifikasi dokumen yang ada dalam koleksi.

Jika Anda menggunakan versi kedua maka semua "tombol tingkat atas" dalam dokumen pembaruan akan dimulai dengan $ . Jika Anda menggunakan opsi pertama maka tidak ada tombol tingkat atas yang akan dimulai dengan $ . Kode melihat bidang pertama, mengira itu adalah dokumen pengganti dan kemudian gagal ketika mencoba memvalidasi sisa dokumen yang valid karena kunci dalam dokumen tidak dapat dimulai dengan $ (agar tidak bingung dengan pembaruan atau permintaan dokumen).

Sunting:

Dalam kasus upsert (misalnya, dokumen belum ada dan Anda menandai pembaruan untuk mengizinkan upsert) operator pencocokan persis kueri digunakan untuk menyemai dokumen. Untuk contoh di atas kita mendapatkan dokumen benih { "orgId" : 2 } . Server kemudian akan menerapkan operator pembaruan dan menyimpan hasilnya.




  1. Redis
  2.   
  3. MongoDB
  4.   
  5. Memcached
  6.   
  7. HBase
  8.   
  9. CouchDB
  1. Bagaimana cara menambahkan nilai ke objek bson.D

  2. Apakah perlu membuka koneksi MongoDB setiap kali saya ingin bekerja dengan DB?

  3. Bagaimana cara mendapatkan nomor versi MongoDB di Heroku?

  4. Menggunakan properti objek sebagai argumen $maxDistance dalam kueri geolokasi mongodb

  5. Mongo Query bidang bersarang dalam array.