MongoDB의 Aggregation 방식 중 간단한 함수 작업이 가능한 Single Purpose Aggregation Methods에 대해 알아보겠습니다. ✍️
Single Purpose Aggregation Methods란?
Single Purpose Aggregation Methods는 MongoDB에서 특정한 집계 작업을 간단하고 효율적으로 수행하기 위해 제공되는 집계 메서드입니다.
이 메서드들은 단일 작업에 초점을 맞추며, 복잡한 파이프라인을 구성하지 않고도 간단한 집계 작업을 처리할 수 있습니다.
대표적인 Single Purpose Aggregation Methods는 다음과 같습니다:
- count()
- distinct()
- group()
- mapReduce() (이전 글에서 다룬 내용)
각 메서드에 대한 설명과 예제
count()
컬렉션의 문서 수를 반환합니다.
// 특정 조건에 맞는 문서 개수 세기
db.orders.count({ status: "completed" });
- 특징: 간단하고 빠르게 문서 수를 계산할 수 있습니다.
- 제약사항: 복잡한 조건의 집계에는 적합하지 않음. Aggregation Pipeline의 $count가 대체 가능.
distinct()
컬렉션에서 특정 필드의 고유한 값을 반환합니다.
// 고객이 구매한 고유 상품 ID 조회
db.orders.distinct("productId", { customerId: "12345" });
- 특징: 고유 값 추출에 효율적.
- 주의사항: 고유 값을 추출할 데이터가 많을 경우 성능 저하가 발생할 수 있음.
group()
MongoDB에서 데이터를 그룹화하고 집계 연산을 수행합니다.
// 고객별 총 구매 금액 계산
db.orders.group({
key: { customerId: 1 }, // 그룹화 기준
initial: { totalAmount: 0 }, // 초기값 설정
reduce: function (doc, result) {
result.totalAmount += doc.amount; // 그룹화 데이터 집계
},
});
- 특징: JavaScript로 유연한 집계 작업 가능.
- 단점: Aggregation Framework에 비해 사용이 복잡하며, 최신 MongoDB 버전에서는 잘 사용되지 않음.
mapReduce()
Map과 Reduce 함수를 사용하여 데이터를 변환 및 집계.
이 메서드는 앞서 작성하신 글에서 이미 다루었으니, 간단히 언급만 해도 충분합니다.
Single Purpose Aggregation Methods의 장단점
장점
- 간단함: 특정 작업에 최적화된 메서드이므로 사용법이 직관적입니다.
- 효율성: 단일 목적에 맞게 설계되어 필요한 결과를 빠르게 얻을 수 있습니다.
- 유연성: JavaScript를 활용해 커스텀 로직을 구현할 수 있는 기능 제공.
단점
- 확장성 부족: 복잡한 집계 작업에는 부적합하며, Aggregation Framework가 더 적합한 경우가 많습니다.
- 성능: 많은 데이터셋이나 복잡한 조건에서는 성능이 저하될 수 있습니다.
Aggregation Framework와 비교
| 특징 | Single Purpose Aggregation Methods | Aggregation Framework |
| 사용 편의성 | 간단한 작업에 적합 | 복잡한 집계 작업에 적합 |
| 성능 | 소규모 데이터셋에 효율적 | 대규모 데이터셋에 더 최적화 |
| 복잡한 연산 | 제한적 | 다양한 연산을 지원 |
| 병렬 처리 | 제한적 | 지원 |
Single Purpose Aggregation Methods가 적합한 사용 사례
- 간단한 데이터 계산
- 컬렉션에서 특정 조건을 만족하는 문서의 수 계산.
- 특정 필드의 고유 값 추출.
- 비교적 작은 데이터셋 작업
- 빠른 결과가 필요한 간단한 집계.
- 복잡한 로직이 불필요한 경우
- 기본 제공되는 메서드로 원하는 결과를 충분히 얻을 수 있을 때.
💡 Single Purpose Aggregation Methods는 간단한 작업에 적합한 MongoDB의 집계 도구입니다.
하지만 복잡한 집계 작업이나 대규모 데이터를 처리해야 하는 경우, Aggregation Framework와 같은 더 강력한 도구를 사용하는 것이 좋습니다.
'Data > MongoDB' 카테고리의 다른 글
| MongoDB Compound Index 제대로 이해하고 성능까지 비교해보자. (0) | 2025.06.21 |
|---|---|
| [MongoDB] Map-Reduce: 대량 데이터 처리의 유연한 방법 (0) | 2024.12.29 |
| [MongoDB]Aggregation Framework: 효율적인 데이터 처리와 분석 (1) | 2024.12.27 |
| MongoDB 인덱스와 인덱싱 전략 이해하기 (3) | 2024.10.31 |
| [MongoDB] Spring Boot에서 임베디드 MongoDB를 사용하는 방법 (0) | 2024.06.30 |