MongoDB 中的聚合查询语句详解

阅读时长 4 分钟读完

什么是聚合查询?

在 MongoDB 中,聚合查询是指通过聚合管道(Aggregation Pipeline)对文档进行多个阶段的处理,以获取所需的结果集。聚合管道由多个阶段组成,每个阶段负责对文档进行一些特定的操作,如过滤、分组、排序、计算等等。

聚合查询的好处在于,它可以节省多次查询的时间和资源,以及用一种灵活的方式对数据进行处理和分析。

聚合查询的基本语法

一般来说,聚合查询通过 aggregate 方法实现。具体语法如下:

其中,$stage1$stageN 都是聚合管道阶段,它们依次按照给定的顺序进行处理。

聚合查询的常用操作

1. $match:文档过滤

$match 阶段用于对文档进行筛选和过滤,只输出符合条件的文档。具体语法如下:

其中,<query> 表示匹配条件,可以是一个文档或一个查询表达式。

例如,我们可以通过以下语句来查询 student 集合中所有年龄大于等于 20 岁的文档:

2. $group:文档分组

$group 阶段用于对文档进行分组,将具有相同字段值的文档分为一组。具体语法如下:

其中:

  • _id 表示分组字段,可以是一个常量、表达式或字段名;
  • <field> 表示统计字段,可以是一个字段名或表达式;
  • <accumulator> 表示统计函数,用于对每个分组的文档执行一项统计操作,例如计数、求和等等。

例如,我们可以通过以下语句来查询 student 集合中所有年龄的平均值:

3. $sort:文档排序

$sort 阶段用于对文档进行排序,以得到按照给定顺序排列的结果集。具体语法如下:

其中:

  • <field> 表示排序字段,可以是一个字段名或表达式;
  • <sort> 表示排序方向,可以是 1 表示正序,-1 表示倒序。

例如,我们可以通过以下语句来查询 student 集合中所有文档按照年龄从小到大排序:

4. $project:文档字段映射

$project 阶段用于对文档进行字段映射,可以新增、删除或重命名字段。具体语法如下:

其中:

  • <field> 表示字段名,可以是一个常量、表达式或字段名;
  • <expression> 表示字段计算表达式,可以是一个算术、逻辑、字符串、日期等等运算。

例如,我们可以通过以下语句来查询 student 集合中所有文档的年龄,以及姓名的第一个字母:

总结

以上就是 MongoDB 中聚合查询的基本操作。通过这些操作,我们可以快速、灵活的对文档进行多个阶段的处理,以获取所需的结果集。对于需要对文档进行一些复杂的数据分析和处理的场景来说,聚合查询无疑是一个非常好的选择。

来源:JavaScript中文网 ,转载请注明来源 https://www.javascriptcn.com/post/64a128f148841e9894d6e51f

纠错
反馈