Si vous insérez un document, MongoDB doit vérifier si le document avec le même ObjectId existe ou non. S'il existe, le document ne peut pas être inséré.
Le même cas s'applique à la mise à jour. Il doit vérifier si le document existe ou non. Sinon, la mise à jour ne peut pas être effectuée. Le cas où votre requête de mise à jour ralentira est lorsqu'elle ne peut pas trouver de document basé sur votre ObjectId / champ indexé.
Sinon, les performances d'insertion/mise à jour du document devraient être les mêmes.
Donc Insert peut être comme ça //(Rapide)
- (Vérifier le document -> Introuvable -> Insérer un nouveau document) Sinon
- (Vérifier le document -> Trouvé -> Impossible d'insérer)
Et mettre à jour avec upsert (ObjectId disponible) //(Rapide)
- (Vérifier le document -> Introuvable -> Insérer un nouveau document) Sinon
- (Vérifier le document -> Trouvé -> Mettre à jour le document)
Ou Mettre à jour avec upsert (Sans ObjectId) //C'est lent
- (Find ObjectIds (Slow) -> Not Found -> Insert new document) Else
- (Find ObjectIds (Slow)-> Found -> Update the documents)