MongoDB
 sql >> Baza danych >  >> NoSQL >> MongoDB

MongoDB:Aktualizacja/Upsert vs Insert

Jeśli wstawiasz dokument, MongoDB musi sprawdzić, czy dokument z tym samym ObjectId istnieje, czy nie. Jeśli istnieje, nie można wstawić dokumentu.

Ten sam przypadek dotyczy aktualizacji. Musi sprawdzić, czy dokument istnieje, czy nie. W przeciwnym razie nie można przeprowadzić aktualizacji. Przypadek, w którym zapytanie o aktualizację będzie spowolnione, jest wtedy, gdy nie może znaleźć dokumentu na podstawie twojego ObjectId / zindeksowanego pola.

W przeciwnym razie wydajność wstawiania/aktualizowania dokumentu powinna być taka sama.

Tak więc Insert może wyglądać tak //(Szybko)

  1. (Sprawdź dokument -> Nie znaleziono -> Wstaw nowy dokument) Inaczej
  2. (Sprawdź dokument -> Znaleziono -> Nie można wstawić)

I aktualizuj za pomocą upsert (dostępny ObjectId) //(Szybko)

  1. (Sprawdź dokument -> Nie znaleziono -> Wstaw nowy dokument) Inaczej
  2. (Sprawdź dokument -> Znaleziono -> Zaktualizuj dokument)

Lub Aktualizuj za pomocą upsert (bez ObjectId) //To jest wolne

  1. (Znajdź identyfikatory obiektów (powoli) -> Nie znaleziono -> Wstaw nowy dokument) Inaczej
  2. (Znajdź identyfikatory obiektów (powoli)-> Znalezione -> Aktualizuj dokumenty)


  1. Redis
  2.   
  3. MongoDB
  4.   
  5. Memcached
  6.   
  7. HBase
  8.   
  9. CouchDB
  1. Powolne zapytanie MongoDB:czy możesz wyjaśnić dlaczego?

  2. java.lang.NoSuchMethodError:com.mongodb.MongoClient.<init>(Ljava/util/List;Lcom/mongodb/MongoCredential;Lcom/mongodb/MongoClientOptions;)V]

  3. Mongoose — Zapytanie o najnowszy dokument

  4. Czy mongo może automatycznie usuwać kolekcje?

  5. Konwertuj ciąg na ObjectID w MongoDB