Nie ma powodu, aby wyświetlać błąd zduplikowanego indeksu w pierwszym przypadku, ponieważ po prostu próbuje zaktualizować _id
i name
pola tego samego rekordu o tej samej wartości.
Jeśli spróbujesz
db.foo.update({ _id: '1098'}, { _id: 'doe123', name: 'John Doe'}, { upsert: true});
otrzymasz błąd, ponieważ zapytanie próbuje zaktualizować rekord z innym _id
z pewnym istniejącym _id
wartość.
W drugim przypadku najpierw utworzyłeś rekord z name
a następnie próbujesz zaktualizować tę samą nazwę w innym rekordzie, co spowoduje błąd jako name
jest unikalnym indeksem.
Edytuj :-
Jeśli próbujesz
db.foo.insert({ _id: 'doe123', name: 'John Doe'});
wyświetli błąd, ponieważ w tym przypadku próbujesz wstawić rekord, który jest już obecny, tj. _id
jest unikalny i próbujesz utworzyć jeszcze jeden rekord z tym samym _id
wartość.