Er is geen reden om in het eerste geval een dubbele indexfout weer te geven, omdat het gewoon probeert de _id
bij te werken en name
velden van hetzelfde record met dezelfde waarde.
Als je het wilt proberen
db.foo.update({ _id: '1098'}, { _id: 'doe123', name: 'John Doe'}, { upsert: true});
u krijgt een foutmelding, omdat de query de record probeert bij te werken met een andere _id
met een aantal bestaande _id
waarde.
In het tweede geval heb je eerst een record aangemaakt met name
veld en dan probeert u dezelfde naam in een ander record bij te werken, wat een fout zal geven als name
is een unieke index.
Bewerken:-
Als je probeert
db.foo.insert({ _id: 'doe123', name: 'John Doe'});
geeft u de foutmelding, omdat u in dit geval probeert een record in te voegen dat al aanwezig is, bijv. _id
is uniek en u probeert nog een record te maken met dezelfde _id
waarde.