$project - 출력 도큐먼트상에 배치할 필드를 지정한다.(projected)
$match - 처리될 도큐먼트를 선택하는 것. find()와 비슷한 역할을 수행한다.
$limit - 다음 단계에 전달될 도큐먼트의 수를 제한한다.
$skip - 지정된 수의 도큐먼트를 건너뛴다.
$unwind -배열을 확장하여 각 배열 항목에 대해 하나의 출력 도큐먼트를 생성한다.
$group -지정된 키로 도큐먼트를 그룹화한다.
$sort -도큐먼트를 정렬한다.
$geoNear - 지리 공간위치 근처의 도큐먼트를 선택한다.
$out - 파이프라인의 결과(출력)를 컬렉션에 쓴다.
$redact -특정 데이터에 대한 접근을 제어한다.
ex)
db.컬렉션이름.aggregate([ {$match: ...}, {$group: ...}, {$sort: ...} ] )

1)전체 제품 컬렉션은 $match 작업으로 전달되고, 입력된 컬렉션으로부터 오직 특정 도큐먼트만 선택한다.
2)$match의 출력은 $group 연산자로 전달되며, $group 연산자는 출력을 특정 키로 그룹화하여 합계 및 평균과 같은 새로운 정보를 제공한다.
3)$group 연산자의 출력은 마지막 단계인 $sort 연산자로 전달되어 정렬이 수행되고 그 뒤에 최종 결과로 반환된다.
| SQL 명령어 | 집계 프레임워크 연산자 |
|---|---|
| SELECT | $project$group 함수 : $sum,$min,$avg 등 |
| FROM | db.collectionName.aggregate(. . .) |
| JOIN | $unwind |
| WHERE | $match |
| GROUP BY | $group |
| HAVING | $match |