sql >> Base de Datos >  >> NoSQL >> MongoDB

MongoDB:Actualizar/Upsert vs Insertar

Si está insertando un documento, MongoDB necesita verificar si el documento con el mismo ObjectId existe o no. Si existe, no se puede insertar el documento.

El mismo caso se aplica a Update. Necesita verificar si el documento existe o no. De lo contrario, no se puede realizar la actualización. El caso en el que su consulta de actualización se ralentizará es cuando no puede encontrar el documento según su ObjectId/campo indexado.

De lo contrario, el rendimiento para insertar/actualizar documentos debería ser el mismo.

Así que Insertar puede ser así //(Rápido)

  1. (Buscar documento -> No encontrado -> Insertar nuevo documento) De lo contrario
  2. (Buscar documento -> Encontrado -> No se puede insertar)

Y Actualizar con upsert (ObjectId disponible) //(Rápido)

  1. (Buscar documento -> No encontrado -> Insertar nuevo documento) De lo contrario
  2. (Buscar documento -> Encontrado -> Actualizar el documento)

O actualizar con upsert (sin ObjectId) //Esto es lento

  1. (Buscar ID de objeto (lento) -> No encontrado -> Insertar nuevo documento) De lo contrario
  2. (Buscar ObjectIds (lento)-> Encontrado -> Actualizar los documentos)