sql >> Databasteknik >  >> NoSQL >> MongoDB

MongoDB:Uppdatera/Upsert vs Insert

Om du infogar dokument måste MongoDB kontrollera om dokumentet med samma ObjectId finns eller inte. Om det finns kan dokumentet inte infogas.

Samma fall gäller för Update. Den måste kontrollera om dokumentet finns eller inte. Annars kan uppdateringen inte utföras. Det fall då din uppdateringsfråga saktar ner är när den inte kan hitta dokument baserat på ditt ObjectId/indexerade fält.

Annars bör prestandan för att infoga/uppdatering av dokument vara densamma.

Så Insert kan vara så här //(Snabb)

  1. (Sök efter dokument -> Hittade inte -> Infoga nytt dokument) Annars
  2. (Sök efter dokument -> Hittade -> Kan inte infogas)

Och uppdatera med upsert (ObjectId tillgängligt) //(Snabb)

  1. (Sök efter dokument -> Hittade inte -> Infoga nytt dokument) Annars
  2. (Sök efter dokument -> Hittade -> Uppdatera dokumentet)

Eller Uppdatera med upsert (Utan ObjectId) //Detta är långsamt

  1. (Hitta objekt-ID (långsamma) -> Hittade inte -> Infoga nytt dokument) Annars
  2. (Hitta objekt-id (långsamt)-> Hittade -> Uppdatera dokumenten)


  1. Låt nya ClusterControl säkra dina MongoDB-distributioner

  2. Hur man bygger en URL Shortener med Node.js och MongoDB

  3. Spring Data:Unikt fält i MongoDB-dokument

  4. mongodb indexstrategi för intervallfråga med olika fält