定义
返回最大值。 $max 会比较值和类型,对不同类型的值使用指定的BSON比较顺序。
$max累加器可在以下阶段使用:
注意
消歧
本页描述了用作累加器时的 $max。累加器返回单个聚合值,例如一群组输入文档的总和、最大值或最小值。
您还可以在其他上下文中使用 $max:
$max (expression),返回大量或值列表中的最大值。$max (window function),用于$setWindowFields阶段以返回特定窗口中文档的最大值。
语法
{ $max: <expression> }
行为
结果类型
$max 按照BSON比较顺序比较输入数据,以确定适当的输出类型。 当输入数据包含多种数据类型时, $max输出类型是比较顺序中最高的类型。
Null 和缺失值
如果 $max 的部分(而非全部)输入值为 null 或缺失,则 $max 仅考虑非空值和非缺失值。
如果 $max 的所有输入值为 null 或缺失,则 $max 返回 null。
数组操作数
在 $group 阶段,如果表达式解析为大量,$max 不会遍历大量,而是将大量作为一个整体进行比较。
相等值
如果多个值相等,$max 可能会返回其中的任何一个值。无法提供 ACID 一致性保证来确定 $max 返回哪个相等值。
示例:在不区分大小写的排序规则下,"a" 和 "A" 可以相等。无法提供 ACID 一致性保证,也无法保证返回对象的顺序。
在 $group 阶段中使用
本页上的示例使用 sample_mflix 数据集中的数据。有关如何将此数据集加载到自管理MongoDB 部署中的详细信息,请参阅加载样本数据集。如果对示例数据库进行了任何修改,则可能需要删除并重新创建数据库才能运行本页上的示例。
以下示例在 $group 阶段使用 $max 查找每个评级类别中电影的最高 IMDb 评级和最长运行时间:
db.movies.aggregate( [ { $match: { rated: { $in: [ "G", "PG", "PG-13", "R" ] }, "imdb.rating": { $gt: 0 }, runtime: { $gt: 0 } } }, { $sort: { rated: 1 } }, { $group: { _id: "$rated", maxImdbRating: { $max: "$imdb.rating" }, maxRuntime: { $max: "$runtime" } } }, { $sort: { _id: 1 } } ] )
上述管道:
使用
$match过滤具有美国常见评级、有效 IMDb 评级和已知运行时间的电影。按
rated对文档进行排序,以确保分组顺序一致。使用
$group和$max查找每个rated群组的最高 IMDb 评分和最长运行时间。按评级类别的字母顺序对输出进行排序。