定义
从大量开头返回指定数量的元素。
注意
消歧
本页介绍了用作表达式时的 $firstN,该表达式从大量的开头返回指定数量的元素。
您还可以在其他上下文中使用 $firstN:
$firstN (window function),在$setWindowFields阶段用于返回特定窗口中文档的前n值。
语法
{ $firstN: { input: <expression>, n: <expression> } }
选项
字段 | 类型 | 说明 |
|---|---|---|
| 表达式(expression) | 要返回前 |
| 表达式(expression) |
|
行为
$firstN会按照它们在输入数组中出现的相同顺序返回元素。$firstN不会过滤掉输入大量中的null值。不能指定小于
1的n值。如果指定的
n大于或等于input大量中的元素数量,$firstN将返回整个input大量。如果
input解析为非数组值,则聚合操作将出错。
例子
本页上的示例使用 sample_mflix 数据集中的数据。有关如何将此数据集加载到自管理MongoDB 部署中的详细信息,请参阅加载样本数据集。如果对示例数据库进行了任何修改,则可能需要删除并重新创建数据库才能运行本页上的示例。
以下示例使用 $firstN操作符返回每部电影的前三名演员。转换成员将在 $addFields 创建的新字段firstThreeCast 中返回。
db.movies.aggregate( [ { $match: { title: { $in: [ "The Godfather", "Spirited Away", "The Dark Knight" ] } } }, { $addFields: { firstThreeCast: { $firstN: { input: "$cast", n: 3 } } } }, { $project: { _id: 0, title: 1, cast: 1, firstThreeCast: 1 } }, { $sort: { title: 1 } } ] )
上述管道:
使用
$addFields和$firstN创建一个新字段firstThreeCast,其中包含cast大量和n: 3的前三个元素。使用
$project可仅在输出中包含title、cast和firstThreeCast字段。使用
$sort按标题对结果进行排序。