Para agentes de IA: um índice de documentação está disponível em https://www.mongodb.com/pt-br/docs/llms.txt — as versões de markdown de todas as páginas estão disponíveis anexando .md a qualquer caminho de URL.
See how MongoDB 9.0 delivers up to 2x higher throughput.
MongoDB Branding Shape
Register now >
Menu Docs

$sum (Expression)

$sum

Retorna a soma de valores numéricos em uma array.

Observação

Outros usos de $sum

Esta página descreve $sum quando usado como uma expressão, que retorna a soma de valores numéricos em uma array.

Você também pode usar $sum nestes outros contextos:

Quando usado como expressão, $sum tem uma de duas sintaxes:

{ $sum: <expression> }

Na sintaxe anterior, o operando é uma única expressão que avalia para uma matriz. $sum atravessa a array e retorna a soma dos valores numéricos da array.

{ $sum: [ <expression1>, <expression2>, ... ] }

Na sintaxe anterior, cada expressão é um único valor numérico. $sum retorna a soma desses valores.

Quando os tipos de entrada são mistos, $sum promove o tipo de entrada menor para o maior dos dois. Um tipo é considerado maior quando representa uma faixa de valores mais ampla. A ordem dos tipos numéricos do menor para o maior é: inteiro → longo → duplo → decimal.

O maior dos tipos de entrada também determina o tipo de resultado, a menos que a operação se exceda e esteja além da faixa representada por esse tipo de dados maior. Em casos de excesso, $sum promove o resultado de acordo com a seguinte ordem:

  • Se o tipo de entrada maior for integer, o tipo de resultado será promovido para long.

  • Se o tipo de entrada maior for long, o tipo de resultado será promovido para double.

  • Se o tipo maior for double ou decimal, o resultado de transbordamento será representado como infinito positivo ou negativo. Não há nenhum tipo de promoção do resultado.

Se utilizado em um campo que contém valores numéricos e não numéricos, $sum ignorará os valores não numéricos e retornará a soma dos valores numéricos.

Se todos os operandos não forem numéricos, $sum retornará 0.

Os exemplos nesta página usam dados do conjunto de dados sample_mflix. Para obter detalhes sobre como carregar esse conjunto de dados em sua implantação autogerenciada do MongoDB , consulte Carregar o conjunto de dados de amostra. Se você fez modificações nos bancos de dados de amostra, talvez seja necessário descartar e recriar os bancos de dados para executar os exemplos nesta página.

Este exemplo usa $sum no estágio $project para calcular o total de prêmios ganhos e nomeados para três filmes e armazenar o resultado em um novo campo chamado totalAwards.

db.movies.aggregate( [
{
$match: {
title: {
$in: [
"The Godfather",
"Inception",
"The Dark Knight"
]
}
}
},
{
$project: {
_id: 0,
title: 1,
totalAwards: { $sum: [ "$awards.wins", "$awards.nominations" ] }
}
},
{
$sort: { totalAwards: -1 }
}
] )

O pipeline anterior:

  • Utiliza $match para filtrar três filmes específicos.

  • Usa $project com $sum para criar o campototalAwards , que contém a soma de awards.wins e awards.nominations para cada filme.

  • Usa $sort para classificar os resultados pelo total de prêmios em ordem decrescente.