Tidak ada alasan untuk menampilkan kesalahan indeks duplikat dalam kasus pertama karena hanya mencoba memperbarui _id
dan name
bidang catatan yang sama dengan nilai yang sama.
Jika Anda akan mencoba
db.foo.update({ _id: '1098'}, { _id: 'doe123', name: 'John Doe'}, { upsert: true});
Anda akan mendapatkan kesalahan, karena kueri mencoba memperbarui catatan dengan _id
yang berbeda dengan beberapa _id
. yang ada nilai.
Dalam kasus kedua, Anda membuat catatan terlebih dahulu dengan name
bidang dan kemudian Anda mencoba memperbarui nama yang sama di catatan lain, yang akan memberikan kesalahan sebagai name
adalah indeks unik.
Sunting :-
Jika Anda mencoba
db.foo.insert({ _id: 'doe123', name: 'John Doe'});
akan memberi Anda kesalahan, karena dalam kasus ini Anda mencoba memasukkan catatan yang sudah ada yaitu _id
unik dan Anda mencoba membuat satu rekaman lagi dengan _id
yang sama nilai.