$map (Transformar Elementos do Array)

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

$map (Transformar Elementos do Array)

$map itera um array, passa cada elemento pela expressão in e coleta os resultados em um array novo de mesmo comprimento. É o operador funcional mais usado em expressões de agregação. Casos típicos: aplicar imposto a cada item de pedido, colocar uma lista de strings em maiúsculas ou extrair um campo de um array de objetos. A variável as é referenciada como $$variável dentro de in, ou use $$this quando as for omitido. $map mantém o comprimento e muda os valores dos elementos; combine com $filter (remoção) e $reduce (dobramento) para pipelines completos de arrays.

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

📝 Sintaxe

{ $map: { input: <array>, as: <variável>, in: <expressão> } }

⚙️ Parâmetros

inputA matriz a iterar.
asO nome da variável do elemento atual, referenciada como $$variable em in; opcional, o padrão é $$this.
inA expressão avaliada para cada elemento; seus resultados formam a nova matriz.

Retorno:Uma nova matriz de resultados de in por elemento; null se a entrada for null

▶ Exemplo

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

// $map: dobrar a quantidade de cada item
db.orders.aggregate([
  { $project: {
      doubled: { $map: { input: '$items', as: 'it', in: { $multiply: ['$$it.qty', 2] } } }
  } }
])

Saída:

{ '_id': 1, 'doubled': [ 4, 6 ] }
{ '_id': 2, 'doubled': [ 2 ] }

📌 Notas

Mais casos práticos em breve.

📚 Tutoriais Relacionados

❓ Perguntas Frequentes

QQual é a diferença entre $map e $filter?
A$map transforma cada elemento sem mudar o comprimento; $filter remove elementos sem mudar o conteúdo. Eles se aninham bem.
QO $map consegue mudar o comprimento do array?
ANão, o resultado corresponde ao comprimento da entrada. Use $filter ou $reduce para mudá-lo.
QPosso omitir a variável as?
ASim — referencie o elemento atual com $$this em in quando omitida.
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%