MongoDB $first 运算符介绍
$first
运算符是 MongoDB 聚合管道中的一个运算符,用于获取分组后的第一个文档中指定字段的值。该运算符常用于统计分析中的数据处理。
语法
在 MongoDB 聚合管道中使用 $first
运算符的语法如下:
{
$first: "<field>"
}
其中 <field>
表示需要获取的字段名。
使用场景
- 需要获取分组后第一个文档中指定字段的值时,可以使用
$first
运算符。 - 对于已排序的数据集合,可以使用
$first
运算符获取分组后的第一个文档的值。
实例
以下是 $first
运算符的一些实例:
示例数据
考虑一个集合,其中存储了学生的考试成绩,包括学生姓名和成绩,如下所示:
{ name: "Alice", score: 85, subject: "math" }
{ name: "Alice", score: 90, subject: "history" }
{ name: "Bob", score: 80, subject: "math" }
{ name: "Bob", score: 70, subject: "history" }
{ name: "Charlie", score: 95, subject: "math" }
{ name: "Charlie", score: 75, subject: "history" }
获取每个学生的第一门科目的成绩
要获取每个学生的第一门科目的成绩,可以使用以下聚合管道:
db.scores.aggregate([
{ $sort: { name: 1, subject: 1 } },
{ $group: { _id: "$name", firstScore: { $first: "$score" } } }
])
执行上述聚合管道后,将返回以下结果:
{ "_id" : "Alice", "firstScore" : 85 }
{ "_id" : "Bob", "firstScore" : 80 }
{ "_id" : "Charlie", "firstScore" : 95 }
获取每个科目的第一个学生的成绩
要获取每个科目的第一个学生的成绩,可以使用以下聚合管道:
db.scores.aggregate([
{ $sort: { subject: 1, name: 1 } },
{ $group: { _id: "$subject", firstScore: { $first: "$score" } } }
])
执行上述聚合管道后,将返回以下结果:
{ "_id" : "history", "firstScore" : 70 }
{ "_id" : "math", "firstScore" : 80 }
结论
MongoDB $first
运算符可以用于在聚合管道中,获取一个分组中第一个文档的值。