MongoDB
 sql >> Datenbank >  >> NoSQL >> MongoDB

MongoDB – Warum gibt der _id-Index bei doppelten Einträgen keinen Fehler aus?

Es gibt keinen Grund, im ersten Fall einen doppelten Indexfehler anzuzeigen, da nur versucht wird, die _id zu aktualisieren und name Felder desselben Datensatzes mit demselben Wert.

Wenn Sie es versuchen werden

  db.foo.update({ _id: '1098'}, { _id: 'doe123', name: 'John Doe'}, { upsert: true});

Sie erhalten eine Fehlermeldung, da die Abfrage versucht, den Datensatz mit einer anderen _id zu aktualisieren mit einer bestehenden _id Wert.

Im zweiten Fall haben Sie zuerst einen Datensatz mit name erstellt Feld und dann versuchen Sie, denselben Namen in einem anderen Datensatz zu aktualisieren, was zu einem Fehler als name führt ist ein eindeutiger Index.

Bearbeiten :-

Wenn Sie es versuchen

 db.foo.insert({ _id: 'doe123', name: 'John Doe'});

gibt Ihnen den Fehler, da Sie in diesem Fall versuchen, einen Datensatz einzufügen, der bereits vorhanden ist, z. B. _id ist eindeutig und Sie versuchen, einen weiteren Datensatz mit derselben _id zu erstellen Wert.