定义
返回数组中 n 个最小值。
注意
消歧
本页介绍 $minN 在作为表达式使用时的情况,它将返回数组中的 n 个最小值。
您还可以在这些其他上下文中使用 $minN:
$minN (accumulator), 基于可变数量的输入文档返回聚合值。$minN (window function),用于$setWindowFields阶段以从特定窗口中的文档返回最小n值。
语法
{ $minN: { n: <expression>, input: <expression> } }
行为
不能指定小于
1的n值。$minN筛选出在input数组中找到的null值。如果指定的
n大于或等于input数组中的元素数,$minN返回input数组中的所有元素。如果
input解析为非数组值,则表达式将产生错误。如果
input包含不同类型的元素,跨类型比较将遵循 BSON 比较顺序。
例子
本页上的示例使用来自 sample_mflix 数据集的数据。有关如何将此数据集加载到您的自管理 MongoDB 部署中的详细信息,请参阅 加载示例数据集。如果您对示例数据库进行了任何修改,您可能需要删除并重新创建数据库,才能运行此页面上的示例。
以下示例使用 $minN 操作符返回每部电影按字母顺序排列的前两个类型。结果将在由 $addFields 创建的新字段 firstAlphabeticalGenres 中返回。
db.movies.aggregate( [ { $match: { $expr: { $gte: [ { $size: "$genres" }, 3 ] } } }, { $addFields: { firstAlphabeticalGenres: { $minN: { n: 2, input: "$genres" } } } }, { $project: { _id: 0, title: 1, genres: 1, firstAlphabeticalGenres: 1 } }, { $limit: 5 } ] )
前面的管道:
使用
$match过滤器至少有三种类型的电影。使用
$addFields创建firstAlphabeticalGenres字段。$minN与n: 2会返回来自genres数组的前两个按字母顺序排列的值。使用
$project仅返回title、genres和firstAlphabeticalGenres字段。使用
$limit返回五个文档,以提高可读性。