定义
返回大量的第一个元素。
注意
消歧
本页介绍了用作表达式时的 $first,该表达式返回大量的第一个元素。
您还可以在其他上下文中使用 $first:
$first (accumulator),用于分组以返回每个群组中的第一个值。$first (window function),在$setWindowFields阶段用于返回窗口中第一个文档的值。
语法
{ $first: <expression> }
<expression> 的计算结果必须是一个大量。
行为
如果操作数表达式的计算结果为大量,则
$first返回该大量的第一个元素。如果大量为空,
$first将返回null。如果表达式的计算结果为
null或引用缺失字段,则$first返回null。
例子
本页上的示例使用 sample_mflix 数据集中的数据。有关如何将此数据集加载到自管理MongoDB 部署中的详细信息,请参阅加载样本数据集。如果对示例数据库进行了任何修改,则可能需要删除并重新创建数据库才能运行本页上的示例。
以下示例使用 $first 返回每部电影排名最高的演员。在 sample_mflix 数据集中,cast大量按账单顺序列出演员,因此第一个元素是账单最高的演员:
db.movies.aggregate( [ { $match: { title: { $in: [ "The Godfather", "Pulp Fiction", "Forrest Gump" ] } } }, { $addFields: { topBilledActor: { $first: "$cast" } } }, { $project: { _id: 0, title: 1, cast: 1, topBilledActor: 1 } }, { $sort: { title: 1 } } ] )
在前面的管道中:
$match筛选三部特定电影。$addFields与$first会创建一个新字段topBilledActor,其中包含cast大量的第一个元素。$project在输出中仅包含title、cast和topBilledActor字段。$sort按标题对结果进行排序。