Se stai inserendo un documento, MongoDB deve verificare se il documento con lo stesso ObjectId esiste o meno. Se esiste, il documento non può essere inserito.
Lo stesso caso vale per l'aggiornamento. Deve verificare se il documento esiste o meno. In caso contrario, non è possibile eseguire l'aggiornamento. Il caso in cui la tua query di aggiornamento rallenterà è quando non riesce a trovare il documento in base al tuo ObjectId/campo indicizzato.
In caso contrario, le prestazioni per l'inserimento/l'aggiornamento del documento dovrebbero essere le stesse.
Quindi Inserisci può essere così //(Veloce)
- (Cerca documento -> Non trovato -> Inserisci nuovo documento) Altro
- (Cerca documento -> Trovato -> Non può essere inserito)
E Aggiorna con upsert (ObjectId disponibile) //(Veloce)
- (Cerca documento -> Non trovato -> Inserisci nuovo documento) Altro
- (Cerca documento -> Trovato -> Aggiorna il documento)
Oppure Aggiorna con upsert (senza ObjectId) //Questo è lento
- (Trova ObjectIds (lento) -> Non trovato -> Inserisci nuovo documento) Altro
- (Trova ObjectIds (lento)-> Trovato -> Aggiorna i documenti)