집계 프레임워크는 여러 도큐먼트의 데이터를 변환하고 결합한다. 그래서 단일 도큐먼트에서 사용할 수 없는 새로운 정보를 생성할 수 있다.
집계 프레임워크는 한 번의 호출로 일련의 도큐먼트 작업을 정의한 다음 배열 형태로 보낼 수 있으므로 작업을 훨씬 쉽고 효율적으로 수행할 수 있다.
- 그룹핑, 평균, 합산 등..
- 의사 조인
- 데이터 리포팅/통계 집계 (연도별, 월별 요약 정보 등)
집계 파이프라인
- $project - 출력 도큐먼트로 보낼 필드 선택 (또는 출력도큐먼트의 필드 이름을 바꿀수도 있음)
- $match - 처리된 도큐먼트 선택 (find와 비슷한 역할)
- $limit
- $skip
- $unwind - 배열을 확장하여 각 배열의 원소를 도큐먼트로 생성 (즉, 배열을 풀어해쳐 평탄화시킴)
- $group - 지정된 키로 그룹핑
- $mix / $max
- $avg / $sum
- $first ($sort가 선행되어야 의미있음)
- $last ($sort가 선행되어야 의미있음)
- $addToSet, $push
- $sort
- $out - 결과를 다른 컬렉션으로 씀
- 등..
db.products.aggregate([
{ '$match': /* ... */ },
{ '$group': /* ... */ },
{ '$sort': /* ... */ }
])
입력 도큐먼트의 필드를 참조할때 $ 를 앞에 붙인다.
db.reviews.aggregate([
{ '$group': { '_id': '$product_id' } }
])