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 (Operador do acumulador)

$sum

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

O acumulador $sum está disponível nos seguintes estágios:

Observação

Outros usos de $sum

Esta página descreve $sum quando usado como acumulador. Os 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 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.

Quando você utiliza $sum em um campo que contém valores numéricos e não numéricos, $sum ignora os valores não numéricos e retorna a soma dos valores numéricos.

Quando você usa $sum em um campo que não existe em nenhum documento da collection, $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 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.

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 filtrar filmes com um valor rated de G, PG, PG-13 ou R e uma contagem inteira de votos IMDb.

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

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