前言:一般查询可以通过find方法,但如果是比较复杂的查询或者数据统计的话,find可能就无能为力了,这时也许你需要的是aggregate.
英文文档中是aggregation pipeline,直译为聚合管道,它可以对数据文档进行变换和组合。聚合管道是基于数据流概念,数据进入管道经过一个或多个stage,每个stage对数据进行操作(筛选,投射,分组,排序,限制或跳过)后输出最终结果。
mongoDB中有许多操作符,在aggregate中每个stage可以使用的操作符叫做管道操作符,以下列举比较常用的管道操作符:
|
操作符 |
简述 |
|---|---|
|
$project |
投射操作符,用于重构每一个文档的字段,可以提取字段,重命名字段,甚至可以对原有字段进行操作后新增字段 |
|
$match |
匹配操作符,用于对文档集合进行筛选 |
|
$group |
分组操作符,用于对文档集合进行分组 |
|
$unwind |
拆分操作符,用于将数组中的每一个值拆分为单独的文档 |
|
$sort |
排序操作符,用于根据一个或多个字段对文档进行排序 |
|
$limit |
限制操作符,用于限制返回文档的数量 |
|
$skip |
跳过操作符,用于跳过指定数量的文档 |
|
$lookup |
连接操作符,用于连接同一个数据库中另一个集合,并获取指定的文档,类似于populate |
|
$count |
统计操作符,用于统计文档的数量 |