MongoDB Aggregation Pipeline
2026년 8월 28일
MongoDB Aggregation Pipeline
find()가 SQL의SELECT ... WHERE라면, aggregate는GROUP BY와 그 이상을 담당한다.- 단계(stage)를 배열로 이어 붙이고, 앞 단계의 출력이 뒤 단계의 입력이 된다. 유닉스 파이프와 같다.
JavaScript
Mermaid스크롤로 확대 · 드래그로 이동
자주 쓰는 stage
| stage | 뜻 | SQL 대응 |
|---|---|---|
$match | 문서 필터 | WHERE |
$group | _id 기준으로 묶고 집계 | GROUP BY |
$sort | 정렬 | ORDER BY |
$limit $skip | 자르기 | LIMIT / OFFSET |
$project | 필드 고르기·계산 | SELECT (projection) |
$unwind | 배열을 행으로 펼침 | (SQL에 직접 대응 없음) |
$lookup | 다른 컬렉션 붙이기 | LEFT JOIN — 비싸다, 남용 금지 |
$group의 _id가 묶는 기준이다. _id: null이면 전체를 하나로 묶는다.
철칙: $match를 맨 앞에
JavaScript
$match가 첫 stage일 때만 인덱스를 쓸 수 있다. $group을 한 번 거치면 그건 이미 인덱스가 없는 중간 결과다.
한 줄 정리
Aggregation Pipeline은 stage를 이어 붙인 집계 질의이고, $match를 맨 앞에 두는 게 성능의 전부다.
관련
- MongoDB
- SQL 실행 순서
- projection
- 인덱스(Index)