$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.
| Categoria | Array |
|---|---|
| Versão do MongoDB | 1.0+ |
| Idioma do Exemplo | mongosh (Shell) |
📝 Sintaxe
{ $map: { input: <array>, as: <variável>, in: <expressão> } }
⚙️ Parâmetros
| input | A matriz a iterar. |
|---|---|
| as | O nome da variável do elemento atual, referenciada como $$variable em in; opcional, o padrão é $$this. |
| in | A 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
- in é a expressão final por elemento; referencie a variável as com um prefixo $$
- $map preserva o comprimento: muda valores, não a contagem; remova elementos com $filter
- Aninhe $map/$filter/$reduce dentro de in para construir pipelines funcionais