$replaceRoot (Substituir a Raiz)

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

$replaceRoot (Substituir a Raiz)

$replaceRoot substitui o documento inteiro por um documento embutido especificado, comumente usado para promover um objeto aninhado como detail ao nível superior. Todos os campos originais são perdidos. Ele gera erro quando o alvo está ausente ou não é um objeto; proteja com $ifNull ou use $replaceWith, que mantém o documento quando o resultado é null.

CategoriaEstágios Principais
Versão do MongoDB1.0+
Idioma do Exemplomongosh (Shell)

📝 Sintaxe

{ $replaceRoot: { newRoot: <expressão de documento> } }

⚙️ Parâmetros

newRootExpressão avaliada para se tornar o novo documento; deve ser um objeto.

Retorno:Fluxo de documentos enraizado em newRoot

▶ Exemplo

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

// $replaceRoot: promove detail à raiz
db.orders.aggregate([
  { $replaceRoot: { newRoot: '$detail' } }
])

Saída:

// Campos do pedido original sumiram; apenas detail permanece
{ "city": "SH", "zip": "200000" }

📌 Notas

📚 Tutoriais Relacionados

❓ Perguntas Frequentes

QQual é a diferença entre $replaceRoot e $project?
A$project seleciona ou calcula campos do original; $replaceRoot troca por um documento inteiramente novo.
QE se o campo newRoot não existir?
AEle gera erro. Proteja com $ifNull ou use a variante $replaceWith.
QComo elevo um nível de aninhamento em vez de substituir tudo?
APara elevação parcial use expressões de caminho pontilhado em $project; $replaceRoot substitui a raiz inteira.
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%