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.
Menu Docs

$sum (operador acumulador)

$sum

Retorna a soma agregada de valores numéricos em um grupo de documentos.

O acumulador $sum está disponível nestes estágios:

Observação

Outros usos de $sum

Esta página descreve $sum quando usado como um acumulador. Acumuladores retornam um valor agregado como soma, máximo ou mínimo em um grupo de documentos de entrada.

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

{ $sum: <expression> }

Quando os tipos de entrada são misturados, $sum promove o tipo de entrada menor para o maior dos dois. Um tipo é considerado maior quando representa uma faixa mais ampla de valores. A ordem dos tipos numéricos do menor para o maior é: inteiro → longo → double → 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 do excesso será representado como + ou - infinito. Não há nenhum tipo de promoção do resultado.

Quando você usa $sum 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.

Quando você usa $sum em um campo que não existe em nenhum documento da coleção, $sum retorna 0 para esse campo.

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

O exemplo a seguir agrupa filmes por classificação de conteúdo e retorna o número total de votos do IMDb para cada grupo.

db.movies.aggregate( [
{
$match: {
rated: { $in: [ "G", "PG", "PG-13", "R" ] },
"imdb.votes": { $type: "int" }
}
},
{
$group: {
_id: "$rated",
totalVotes: { $sum: "$imdb.votes" }
}
},
{
$sort: { _id: 1 }
}
] )

O pipeline anterior:

  • Usa $match para usar o filtro de filmes com um valor rated de G, PG, PG-13 ou R e uma contagem de votos IMDb inteira.

  • Usa $group para agrupar filmes pelo campo rated e calcula totalVotes usando $sum em imdb.votes.

  • Usa $sort para retornar resultados em ordem alfabética por classificação de conteúdo.