$reduce (Reduzir Array a um Único Valor)
Última atualização: 2026-10-09
$reduce (Reduzir Array a um Único Valor)
$reduce dobra um array em um único valor, o equivalente de agregação do reduce/fold funcional. Ele recebe um initialValue e uma expressão in onde $$value é o acumulador e $$this é o elemento atual. Usos típicos: somar um array de números, unir strings ou contar elementos que satisfazem uma condição. Um array vazio retorna initialValue diretamente. $reduce é mais geral do que $sum ou $concat e pode expressar qualquer lógica de acumulação.
| Categoria | Array |
|---|---|
| Versão do MongoDB | 1.0+ |
| Idioma do Exemplo | mongosh (Shell) |
📝 Sintaxe
{ $reduce: { input: <array>, initialValue: <valor inicial>, in: <redutor> } }
⚙️ Parâmetros
| input | A matriz a reduzir. |
|---|---|
| initialValue | O valor inicial do acumulador. |
| in | A expressão do redutor; $$value é o acumulador, $$this o elemento atual. |
Retorno:Um único valor reduzido; matriz vazia retorna initialValue; entrada null resulta em null
▶ Exemplo
Execute os comandos abaixo no seu mongosh local (requer um mongod em execução):
// $reduce: somar o array
db.stats.aggregate([
{ $project: {
total: { $reduce: { input: '$scores', initialValue: 0, in: { $add: ['$$value', '$$this'] } } }
} }
])
Saída:
{ '_id': 1, 'total': 285 }
📌 Notas
- Dentro de in, $$value é o acumulador e $$this é o elemento atual; ambos são embutidos
- Um array vazio retorna initialValue sem erro
- O tipo de initialValue conduz o tipo do resultado: 0 produz números, '' produz strings
🏷️ Tags Relacionados
💡 Casos Relacionados
Mais casos práticos em breve.
📚 Tutoriais Relacionados
❓ Perguntas Frequentes
QO $reduce consegue somar um array?
ASim — initialValue 0 com { $add: ['$$value', '$$this'] }; para números simples, $sum também funciona.
QO que acontece com um array vazio?
ARetorna initialValue diretamente, sem erro.
QO que são $$value e $$this?
A$$value é o resultado em execução e $$this o elemento atual; ambos existem apenas dentro de in do $reduce.