MongoDB
 sql >> Database >  >> NoSQL >> MongoDB

MongoDB:aggiornamento/upsert vs inserimento

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)

  1. (Cerca documento -> Non trovato -> Inserisci nuovo documento) Altro
  2. (Cerca documento -> Trovato -> Non può essere inserito)

E Aggiorna con upsert (ObjectId disponibile) //(Veloce)

  1. (Cerca documento -> Non trovato -> Inserisci nuovo documento) Altro
  2. (Cerca documento -> Trovato -> Aggiorna il documento)

Oppure Aggiorna con upsert (senza ObjectId) //Questo è lento

  1. (Trova ObjectIds (lento) -> Non trovato -> Inserisci nuovo documento) Altro
  2. (Trova ObjectIds (lento)-> Trovato -> Aggiorna i documenti)