이 장에서는 주로 SQL의 group by
문과 유사한 통계 분석을 위해 사용되는 MongoDB 집계 파이프라인을 소개합니다. MongoDB 셸에서는 db.collection.aggregate()
함수를 통해 통계 분석을 수행합니다.
컨셉
집계 파이프라인은 데이터를 파이프라인을 통해 흐르는 물과 같이 다루는 추상적인 컨셉입니다. 파이프라인 내에서 데이터를 여러 단계에서 처리할 수 있습니다. 한 단계가 데이터를 처리한 후, 처리된 결과는 다음 단계로 전달됩니다.
통계 분석에서 집계 파이프라인을 적용하는 예시:
- 첫 번째 단계에서는 특정 조건에 따라 컬렉션에서 문서 데이터를 검색합니다.
- 두 번째 단계에서는 검색된 문서 데이터를 그룹화하고 집계합니다.
- 세 번째 단계에서는 두 번째 단계에서 집계된 데이터를 정렬합니다.
전체 프로세스는 파이프라인 작업처럼 데이터가 파이프라인의 한쪽 끝에서 흐르고, 여러 단계를 거쳐 처리되어 최종 결과가 출력됩니다.
MongoDB 파이프라인 지원 연산자
MongoDB에서 지원하는 일반적인 파이프라인 연산자는 다음과 같습니다:
연산자 | 설명 |
---|---|
$match | $match 단계는 조건에 따라 문서 데이터를 필터링하는 데 사용되며, SQL의 where 조건과 유사합니다. |
$group | $group 단계는 문서 데이터를 그룹화하고 집계하는 데 사용되며, SQL의 group by 절과 유사합니다. |
$sort | 데이터를 정렬하는 데 사용됩니다. |
집계 파이프라인 사용 단계
일반적으로 다음과 같은 세 단계가 포함됩니다:
- $match를 사용하여 대상 데이터를 필터링합니다.
- $group을 사용하여 데이터를 그룹화하고 집계합니다.
- 결과를 $sort를 사용하여 정렬합니다 (선택 사항).
예시:
db.orders.aggregate([
{ $match: { status: "A" } },
{ $group: { _id: "$cust_id", total: { $sum: "$amount" } } },
{ $sort: { total: -1 } }
])
해당하는 SQL:
select sum(amount) as total from orders
where status="A"
group by cust_id
order by total desc
참고: 집계 통계 분석에 대한 자세한 정보는 후속 장을 참조하십시오.