sql >> Databáze >  >> NoSQL >> MongoDB

MongoDB:Update/Upsert vs Insert

Pokud vkládáte dokument, MongoDB potřebuje zkontrolovat, zda dokument se stejným ObjectId existuje nebo ne. Pokud existuje, dokument nelze vložit.

Stejný případ platí pro Update. Je třeba zkontrolovat, zda dokument existuje nebo ne. V opačném případě nelze aktualizaci provést. Případ, kdy se váš aktualizační dotaz zpomalí, je, když nemůže najít dokument na základě vašeho ObjectId / indexovaného pole.

Jinak by měl být výkon pro vkládání/aktualizaci dokumentu stejný.

Takže Insert může být takto //(Fast)

  1. (Vyhledat dokument -> Nenalezeno -> Vložit nový dokument) Jinak
  2. (Vyhledat dokument -> Nalezen -> Nelze vložit)

A Update with upsert (ObjectId k dispozici) //(Fast)

  1. (Vyhledat dokument -> Nenalezeno -> Vložit nový dokument) Jinak
  2. (Vyhledat dokument -> Nalezen -> Aktualizovat dokument)

Nebo Aktualizujte pomocí upsert (bez ObjectId) //To je pomalé

  1. (Najít ObjectIds (pomalé) -> Nenalezeno -> Vložit nový dokument) Jinak
  2. (Najít ObjectIds (pomalu)-> Nalezeno -> Aktualizovat dokumenty)


  1. mongoDB:C# driver V2 Jak aktualizovat položku ve vnořené kolekci

  2. hibernujte mezipaměť druhé úrovně pomocí Redis – zlepší to výkon?

  3. Yii2 Aktivní záznam, jak vytvořit vztah mezi modely mongo

  4. Ukládání java 8 LocalDate do mongo DB