Para agentes de IA: hay un índice de documentación disponible en https://www.mongodb.com/es/docs/llms.txt — versiones en markdown de todas las páginas están disponibles agregando .md a cualquier ruta URL.
Docs Menu

$sum (operador de acumulación)

$sum

Devuelve la suma total de valores numéricos en un grupo de documentos.

El acumulador $sum está disponible en estas etapas:

Nota

Otros usos de $sum

Esta página describe $sum cuando se utiliza como acumulador. Los acumuladores devuelven un valor agregado como la suma, el máximo o el mínimo en un grupo de documentos de entrada.

También puede usar $sum en estos otros contextos:

{ $sum: <expression> }

Cuando se mezclan los tipos de entrada, $sum promueve el tipo de entrada menor al mayor de los dos. Un tipo se considera mayor cuando representa un rango más amplio de valores. El orden de los tipos numéricos, de menor a mayor, es: entero → largo → double → decimal.

El tipo de entrada mayor también determina el tipo de resultado, a menos que la operación se desborde y salga del rango representado por ese tipo de dato mayor. En casos de desbordamiento, $sum promueve el resultado según el siguiente orden:

  • Si el tipo de entrada más grande es integer, el tipo de resultado se eleva a long.

  • Si el tipo de entrada más grande es long, el tipo de resultado se eleva a double.

  • Si el tipo mayor es double o decimal, el resultado del desbordamiento se representa como infinito positivo o negativo. No hay promoción de tipo del resultado.

Cuando se utiliza $sum en un campo que contiene tanto valores numéricos como no numéricos, $sum ignora los valores no numéricos y devuelve la suma de los valores numéricos.

Cuando utiliza $sum en un campo que no existe en ningún documento de la colección, $sum devuelve 0 para ese campo.

Los ejemplos de esta página utilizan datos del conjunto de datos sample_mflix. Para obtener más información sobre cómo cargar este conjunto de datos en la implementación autogestionada de MongoDB, consultar Cargar el conjunto de datos de muestra. Si realizó alguna modificación en las bases de datos de muestra, es posible que deba descartar y volver a crear las bases de datos para ejecutar los ejemplos de esta página.

El siguiente ejemplo agrupa películas por clasificación de contenido y devuelve el número total de votos de 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 }
}
] )

El pipeline anterior:

  • Utiliza $match para filtrar películas con un valor rated de G, PG, PG-13 o R y un recuento de votos de IMDb entero.

  • Utiliza $group para agrupar películas por el campo rated y calcula totalVotes utilizando $sum en imdb.votes.

  • Utiliza $sort para devolver resultados en orden alfabético por clasificación de contenido.