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)
- (Sprawdź dokument -> Nie znaleziono -> Wstaw nowy dokument) Inaczej
- (Sprawdź dokument -> Znaleziono -> Nie można wstawić)
I aktualizuj za pomocą upsert (dostępny ObjectId) //(Szybko)
- (Sprawdź dokument -> Nie znaleziono -> Wstaw nowy dokument) Inaczej
- (Sprawdź dokument -> Znaleziono -> Zaktualizuj dokument)
Lub Aktualizuj za pomocą upsert (bez ObjectId) //To jest wolne
- (Znajdź identyfikatory obiektów (powoli) -> Nie znaleziono -> Wstaw nowy dokument) Inaczej
- (Znajdź identyfikatory obiektów (powoli)-> Znalezione -> Aktualizuj dokumenty)