MongoDB
 sql >> Base de Dados >  >> NoSQL >> MongoDB

MongoDB:Atualizar/Upsert vs Inserir


Se você estiver inserindo um documento, o MongoDB precisa verificar se o documento com o mesmo ObjectId existe ou não. Se existir, o documento não pode ser inserido.

O mesmo caso se aplica ao Update. Ele precisa verificar se o documento existe ou não. Caso contrário, a atualização não pode ser realizada. O caso em que sua consulta de atualização ficará lenta é quando ela não consegue encontrar o documento com base no seu ObjectId / campo indexado.

Caso contrário, o desempenho para inserção/atualização de documento deve ser o mesmo.

Então Insert pode ser assim //(Rápido)
  1. (Verificar documento -> Não encontrado -> Inserir novo documento) Senão
  2. (Verificar documento -> Encontrado -> Não pode ser inserido)

E atualize com upsert (ObjectId disponível) //(Rápido)
  1. (Verificar documento -> Não encontrado -> Inserir novo documento) Senão
  2. (Verificar documento -> Encontrado -> Atualizar o documento)

Ou atualize com upsert (sem ObjectId) //Isso é lento
  1. (Localizar ObjectIds (Lento) -> Não encontrado -> Inserir novo documento) Else
  2. (Encontre ObjectIds (Lento)-> Encontrado -> Atualize os documentos)