Data/MongoDB

[MongoDB] Single Purpose Aggregation: 간단한 집계 작업

누구세연 2024. 12. 31. 22:52

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가 적합한 사용 사례

  1. 간단한 데이터 계산
    • 컬렉션에서 특정 조건을 만족하는 문서의 수 계산.
    • 특정 필드의 고유 값 추출.
  2. 비교적 작은 데이터셋 작업
    • 빠른 결과가 필요한 간단한 집계.
  3. 복잡한 로직이 불필요한 경우
    • 기본 제공되는 메서드로 원하는 결과를 충분히 얻을 수 있을 때.

 

 

💡 Single Purpose Aggregation Methods는 간단한 작업에 적합한 MongoDB의 집계 도구입니다.
하지만 복잡한 집계 작업이나 대규모 데이터를 처리해야 하는 경우, Aggregation Framework와 같은 더 강력한 도구를 사용하는 것이 좋습니다.