定义
注意
$maxN 的其他用途
本页介绍了用作表达式时的 $maxN,该表达式会返回大量中最大的 n 值。
您还可以在其他上下文中使用 $maxN:
$maxN (accumulator),返回群组内的n最大值。$maxN (window function),在$setWindowFields阶段用于返回特定窗口中文档的最大n值。
语法
{ $maxN: { n: <expression>, input: <expression> } }
字段 | 类型 | 说明 |
|---|---|---|
| 表达式(expression) | 指定要返回的元素数。必须解析为正整数。 |
| 表达式(expression) | 指定要返回最多 |
行为
$maxN过滤掉null值。如果
input大量包含的元素少于n个元素,$maxN将返回大量中的所有元素。如果
input解析为非数组值,则操作将返回错误。
例子
本页上的示例使用 sample_mflix 数据集中的数据。有关如何将此数据集加载到自管理MongoDB 部署中的详细信息,请参阅加载样本数据集。如果对示例数据库进行了任何修改,则可能需要删除并重新创建数据库才能运行本页上的示例。
以下示例使用 $maxN 返回每部电影按字母顺序排列的最后两名演员,并将其存储在 $addFields 创建的新 topTwoCast字段中。
db.movies.aggregate( [ { $match: { title: { $in: [ "The Godfather", "Spirited Away", "The Dark Knight" ] } } }, { $addFields: { topTwoCast: { $maxN: { n: 2, input: "$cast" } } } }, { $project: { _id: 0, title: 1, cast: 1, topTwoCast: 1 } }, { $sort: { title: 1 } } ] )
上述管道:
使用
$addFields和$maxN创建一个新字段topTwoCast,其中包含来自cast大量和n: 2的按字母顺序排列的最后两个值。使用
$project可仅在输出中包含title、cast和topTwoCast字段。使用
$sort按标题对结果进行排序。