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.