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

$maxN(表达式操作符)

$maxN

返回数组中 n 个最大值。

注意

$maxN 的其他用途

本页介绍 $maxN 当作为 表达式 使用时,它从数组中返回最大的 n 值。

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

{ $maxN: { n: <expression>, input: <expression> } }
字段
类型
说明

n

表达式(expression)

指定要返回的元素数。必须解析为正整数。

input

表达式(expression)

指定要从中返回最大 n 个元素的输入数组。

  • $maxN 使用过滤器过滤掉 null 值。

  • 如果 input 数组包含的元素少于 n 个,$maxN 返回该数组中的所有元素。

  • 如果 input 解析为非数组值,则该操作将出错。

  • 如果 input 同时包含数字和 string 元素,string 元素将在数字元素之前进行排序,具体取决于 BSON 比较顺序。

本页上的示例使用来自 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 }
}
] )

前面的管道:

  • 使用 $match 作为过滤器,过滤出三部特定电影。

  • 使用 $addFields 和 $maxN 创建一个名为 topTwoCast 的新字段,包含按字母顺序排列的最后两个值,来自 cast 数组的 n: 2。

  • 使用 $project 来在输出中仅包含 title、cast 和 topTwoCast 字段。

  • 使用 `$sort` 按标题对结果进行排序。

给本页内容打分