replaceOne() (Substituir um Documento)

Última atualização: 2026-10-09

replaceOne() (Substituir um Documento)

replaceOne() troca o primeiro documento que corresponder a um filtro por um documento totalmente novo. Diferente de updateOne(), cujo segundo argumento usa operadores de atualização, aqui o segundo argumento é o próprio documento de substituição — todos os campos, exceto _id, são sobrescritos. O resultado inclui matchedCount e modifiedCount. É a ferramenta certa quando a estrutura de um documento precisa ser reescrita por completo.

CategoriaEscrita
Versão do MongoDB1.0+
Idioma do Exemplomongosh (Shell)

📝 Sintaxe

db.<collection>.replaceOne(<filter>, <replacement>, { upsert: <bool> })

⚙️ Parâmetros

filtroPredicado que corresponde ao documento a substituir.
novo documentoO documento de substituição completo; sobrescreve todos os campos exceto _id.
upsertOpcional. Insere quando nada corresponde; padrão false.

Retorno:UpdateResult: { acknowledged, matchedCount, modifiedCount, upsertedId }.

▶ Exemplo

Execute os comandos abaixo no seu mongosh local (requer um mongod em execução):

// replaceOne: substitui o documento de Bob por completo
db.users.replaceOne(
  { name: 'Bob' },
  { name: 'Bob', age: 26, city: 'Shanghai', vip: true }
)

Saída:

{ acknowledged: true, matchedCount: 1, modifiedCount: 1, upsertedId: null }

📌 Notas

Mais casos práticos em breve.

📚 Tutoriais Relacionados

❓ Perguntas Frequentes

QQual é a diferença entre replaceOne e updateOne?
AupdateOne() altera campos incrementalmente com operadores; replaceOne() troca por um documento inteiramente novo, sobrescrevendo todos os campos exceto _id.
QO replaceOne pode alterar o _id?
ANão. _id é imutável; a substituição deve manter o _id original ou um erro é lançado.
QOperadores de atualização podem ir no segundo argumento de replaceOne?
ANão. O segundo argumento é o documento de substituição; {$set: ...} seria armazenado literalmente como um campo.
Web-Tutorial.com

Equipe Técnica Web-Tutorial

Uma plataforma de tutoriais mantida por diversos desenvolvedores. Cada tutorial é escrito e revisado por profissionais da área correspondente. Trabalhamos para manter nosso conteúdo preciso e confiável — se encontrar algum problema, avise-nos.

100%