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

MongoDB:Update/Upsert vs. Insert

Wenn Sie ein Dokument einfügen, muss MongoDB prüfen, ob das Dokument mit derselben ObjectId existiert oder nicht. Wenn es existiert, kann das Dokument nicht eingefügt werden.

Gleiches gilt für Update. Es muss geprüft werden, ob das Dokument existiert oder nicht. Andernfalls kann die Aktualisierung nicht durchgeführt werden. Der Fall, in dem Ihre Aktualisierungsabfrage langsamer wird, ist, wenn sie kein Dokument basierend auf Ihrer ObjectId/indiziertem Feld finden kann.

Andernfalls sollte die Leistung beim Einfügen/Aktualisieren von Dokumenten gleich sein.

Einfügen kann also so sein //(Schnell)

  1. (Nach Dokument suchen -> Nicht gefunden -> Neues Dokument einfügen) Else
  2. (Nach Dokument suchen -> Gefunden -> Kann nicht eingefügt werden)

Und Update mit upsert (ObjectId verfügbar) //(Fast)

  1. (Nach Dokument suchen -> Nicht gefunden -> Neues Dokument einfügen) Else
  2. (Nach Dokument suchen -> Gefunden -> Dokument aktualisieren)

Oder Update mit Upsert (Ohne ObjectId) //Das ist langsam

  1. (ObjectIds finden (langsam) -> Nicht gefunden -> Neues Dokument einfügen) Else
  2. (ObjectIds finden (langsam) -> Gefunden -> Dokumente aktualisieren)