Det finns ingen anledning att visa dubblettindexfel i det första fallet eftersom det bara försöker uppdatera _id
och name
fält i samma post med samma värde.
Om du vill försöka
db.foo.update({ _id: '1098'}, { _id: 'doe123', name: 'John Doe'}, { upsert: true});
du kommer att få ett felmeddelande, eftersom frågan försöker uppdatera posten med annan _id
med någon befintlig _id
värde.
I det andra fallet skapade du först en post med name
och sedan försöker du uppdatera samma namn i en annan post, vilket kommer att ge felet som name
är unikt index.
Redigera :-
Om du försöker
db.foo.insert({ _id: 'doe123', name: 'John Doe'});
ger dig felet, eftersom du i det här fallet försöker infoga en post som redan finns, dvs. _id
är unik och du försöker skapa ytterligare en post med samma _id
värde.