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 运算符可以用于在聚合管道中,获取一个分组中第一个文档的值。