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:
- Berikan dokumen lengkap untuk pembaruan. Untuk model ini dokumen yang ada ditimpa oleh dokumen yang disediakan.
- 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.