$unwind (Desestruturar Array)

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

$unwind (Desestruturar Array)

$unwind desestrutura um campo de array, emitindo um documento por elemento enquanto copia todos os outros campos. Use-o para achatar arrays antes de agrupamentos, estatísticas ou lookups. Documentos com arrays vazios, ausentes ou null são descartados por padrão; preserveNullAndEmptyArrays os mantém e includeArrayIndex expõe o índice do elemento. Desestruturar multiplica a contagem de documentos, então orce os estágios seguintes de acordo.

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

📝 Sintaxe

{ $unwind: { path: "$arrayField", preserveNullAndEmptyArrays: <bool>, includeArrayIndex: "<campoDeIndice>" } }

⚙️ Parâmetros

pathCaminho do campo de matriz a desconstruir, prefixado com $.
preserveNullAndEmptyArraysQuando true, mantém documentos com matrizes vazias, ausentes ou null.
includeArrayIndexGera o índice de cada elemento na matriz original para este campo.

Retorno:Fluxo de documentos achatado (um documento por elemento de matriz)

▶ Exemplo

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

// $unwind: desestrutura o array tags
db.inventory.aggregate([
  { $unwind: { path: '$tags', includeArrayIndex: 'idx' } }
])

Saída:

{ "_id": 1, "item": "Pen", "tags": "A", "idx": 0 }
{ "_id": 1, "item": "Pen", "tags": "B", "idx": 1 }

📌 Notas

📚 Tutoriais Relacionados

❓ Perguntas Frequentes

QOs documentos produzidos por $unwind compartilham o mesmo _id?
ASim. _id e todos os outros campos são copiados literalmente; apenas o campo de array vira um único elemento.
QO que acontece quando $unwind encontra um array vazio?
AO documento é descartado por padrão; defina preserveNullAndEmptyArrays como true para mantê-lo.
QVários campos de array podem ser desestruturados de uma vez?
AUm $unwind lida com um array. Encadeie vários estágios $unwind para vários arrays, o que produz um produto cartesiano.
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%