对于 AI 代理:可在 https://www.mongodb.com/zh-cn/docs/llms.txt 获取文档索引—通过在任何 URL 路径后添加 .md 可获取所有页面的 Markdown 版本。
See how MongoDB 9.0 delivers up to 2x higher throughput.
MongoDB Branding Shape
Register now >
Docs 菜单

$sum(表达式)

$sum

返回大量中数值的总和。

注意

$sum 的其他用途

本页介绍了用作表达式时的 $sum,该表达式返回大量中数值的总和。

您还可以在其他上下文中使用 $sum:

用作表达式时,$sum 采用以下两种语法之一:

{ $sum: <expression> }

在前面的语法中,操作数是计算结果为大量的单个表达式。 $sum 遍历大量并返回数组数值的总和。

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

在前面的语法中,每个表达式都是一个数值。 $sum 会返回这些值的总和。

当混合输入类型时,$sum 会将较小的输入类型提升为两者中较大的输入类型。当表示更范围的值时,该类型被认为更大。数值类型从小到大的顺序是:整数 → 长整型 → 双精度浮点数 → 十进制。

较大的输入类型也决定了结果类型,除非操作溢出,超出了较大数据类型所代表的范围。在溢出的情况下,$sum 按照以下顺序推送结果:

如果用于同时包含数字值和非数字值的字段,$sum 会忽略非数字值并返回数字值的总和。

如果所有操作数都是非数字,则 $sum 返回 0。

本页上的示例使用 sample_mflix 数据集中的数据。有关如何将此数据集加载到自管理MongoDB 部署中的详细信息,请参阅加载样本数据集。如果对示例数据库进行了任何修改,则可能需要删除并重新创建数据库才能运行本页上的示例。

此示例在 $project 阶段使用 $sum 来计算三部电影赢得和提名的总奖项,并将结果存储在名为 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 }
}
] )

上述管道:

给本页内容打分