As traduções são geradas por tradução automática. Em caso de conflito entre o conteúdo da tradução e da versão original em inglês, a versão em inglês prevalecerá.
$sum
O $sum operador no Amazon DocumentDB retorna a soma da expressão especificada para cada documento em um grupo. É um operador de acumulador de grupo que normalmente é usado no estágio $group de um pipeline de agregação para realizar cálculos de soma.
Parâmetros
-
expression: A expressão numérica a ser somada. Isso pode ser um caminho de campo, uma expressão ou uma constante.
Exemplo (MongoDB Shell)
O exemplo a seguir demonstra o uso do $sum operador para calcular o total de vendas de cada produto.
Crie documentos de amostra
db.sales.insertMany([ { product: "abc", price: 10, quantity: 2 }, { product: "abc", price: 10, quantity: 3 }, { product: "xyz", price: 20, quantity: 1 }, { product: "xyz", price: 20, quantity: 5 } ]);
Exemplo de consulta
db.sales.aggregate([ { $group: { _id: "$product", totalSales: { $sum: { $multiply: [ "$price", "$quantity" ] } } }} ]);
Saída
[
{ "_id": "abc", "totalSales": 50 },
{ "_id": "xyz", "totalSales": 120 }
]
Exemplo de uso do operador de janela (MongoDB Shell)
Novo na versão 8.0.2.
O $sum operador também pode ser usado como operador de janela no $setWindowFields palco. Nesse contexto, ele retorna a soma da expressão especificada para os documentos em cada janela. Você especifica o operador no output campo e, opcionalmente, define os limites da janela com um window documento.
Crie documentos de amostra
db.dailySales.insertMany([ { _id: 1, product: "abc", day: 1, amount: 10 }, { _id: 2, product: "abc", day: 2, amount: 20 }, { _id: 3, product: "abc", day: 3, amount: 15 }, { _id: 4, product: "xyz", day: 1, amount: 30 }, { _id: 5, product: "xyz", day: 2, amount: 25 } ]);
Exemplo de consulta
O exemplo a seguir particiona os documentos porproduct, classifica cada partição por day e retorna um total contínuo de amount desde o início da partição até o documento atual.
db.dailySales.aggregate([ { $setWindowFields: { partitionBy: "$product", sortBy: { day: 1 }, output: { runningTotal: { $sum: "$amount", window: { documents: ["unbounded", "current"] } } } } } ]);
Saída
[
{ "_id": 1, "product": "abc", "day": 1, "amount": 10, "runningTotal": 10 },
{ "_id": 2, "product": "abc", "day": 2, "amount": 20, "runningTotal": 30 },
{ "_id": 3, "product": "abc", "day": 3, "amount": 15, "runningTotal": 45 },
{ "_id": 4, "product": "xyz", "day": 1, "amount": 30, "runningTotal": 30 },
{ "_id": 5, "product": "xyz", "day": 2, "amount": 25, "runningTotal": 55 }
]
Cada documento é aumentado com runningTotal a soma cumulativa de amount dentro de sua partição até e incluindo o documento atual.
Exemplos de código
Para ver um exemplo de código para usar o $sum operador, escolha a guia do idioma que você deseja usar. Os exemplos a seguir mostram o uso do acumulador (em$group) e o uso do operador de janela (em$setWindowFields):