V prvním případě není důvod zobrazovat chybu duplicitního indexu, protože se pouze pokouší aktualizovat _id
a name
pole stejného záznamu se stejnou hodnotou.
Pokud to zkusíte
db.foo.update({ _id: '1098'}, { _id: 'doe123', name: 'John Doe'}, { upsert: true});
dostanete chybu, protože dotaz se pokouší aktualizovat záznam s jiným _id
s některým existujícím _id
hodnotu.
Ve druhém případě jste nejprve vytvořili záznam s name
a poté se pokoušíte aktualizovat stejný název v jiném záznamu, což způsobí chybu name
je jedinečný index.
Upravit :-
Pokud se snažíte
db.foo.insert({ _id: 'doe123', name: 'John Doe'});
zobrazí chybu, protože v tomto případě se pokoušíte vložit záznam, který již existuje, tj. _id
je jedinečný a pokoušíte se vytvořit další záznam se stejným _id
hodnotu.