对于 AI 代理:可在 https://www.mongodb.com/zh-cn/docs/llms.txt 获取文档索引—通过在任何 URL 路径后添加 .md 可获取所有页面的 Markdown 版本。
Docs 菜单

$sum(累加器运算符)

$sum

返回一组文档中数值的汇总和。

$sum 累加器可在以下阶段使用:

注意

$sum 的其他用途

本页介绍了 $sum 用作 累加器 时的情况。累加器对一组输入文档返回聚合值,如总和、最大值或最小值。

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

{ $sum: <expression> }

当混合输入类型时,$sum 会将较小的输入类型提升为两者中较大的输入类型。当一个类型表示更广泛的值范围时,该类型被视为较大。数字类型从小到大的顺序为:integer → long → double → decimal。

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

  • 如果较大的输入类型为 integer,则结果类型将提升为 long。

  • 如果较大的输入类型为 long,则结果类型将提升为 double。

  • 如果较大的类型是 double 或 decimal,则溢出结果表示为 + 或 - 无穷大。没有对结果进行类型推送。

当对同时包含数字值和非数字值的字段使用 $sum 时,$sum 会忽略非数字值并返回数字值的总和。

当在集合中任何文档中不存在的字段上使用 $sum 时,$sum 会为该字段返回 0。

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

以下示例按内容评级对电影进行分组,并返回每个组的 IMDb 总投票数。

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 }
}
] )

前面的管道:

  • 使用 $match 来过滤器 rated 值为 G、PG、PG-13 或 R 并且 IMDb 投票数为整数的电影。

  • 使用 `$group` 按照 `rated` 字段对电影进行分组,并使用 `$sum` 在 `imdb.votes` 上计算 `totalVotes。

  • 使用 `$sort` 按内容评级对结果进行字母顺序返回。

给本页内容打分