프로젝트/mongoDB

MongoDB Aggregation Operations

Junuuu 2024. 2. 5. 00:01
728x90

 

개요

"MongoDB 공식문서 Aggregation Operations"의 내용을 정리해보고자 합니다.

 

 

Aggregation Operation 

여러 문서의 값을 group으로 묶거나, group화 된 데이터에 연산을 수행하여 결과를 반환하거나, 데이터를 분석하기 위해 사용되는 연산을 의미합니다.

SQL의 group by 등의 집계 함수와 유사한 개념입니다.

 

Aggregation Operation이 등장하기 전에는 Map-Reduce라는 개념이 존재하였지만 MongoDB 5.0부터 deprecated 되었습니다.

 

 

 Aggregation Pipelines

Aggregation Operation이 여러개가 파이프라인으로 실행되는 개념입니다.

filter를 수행하거나 group으로 묶고 값을 계산하는 절차 등이 포함됩니다.

각 연산의 결과는 다음 파이프라인으로 전달되고 최종적으로 전체값이나 평균값 최솟값등을 반환할 수 있습니다.

 

예시

db.orders.aggregate( [
   // Stage 1: order 문서에서 피자의 size로 필터링
   {
      $match: { size: "medium" }
   },
   // Stage 2: 필터링된 피자들을 이름별로 그루핑하고 총 수량 계산하기
   {
      $group: { _id: "$name", totalQuantity: { $sum: "$quantity" } }
   }
] )

해당 예시는 2개의 stage로 구성되어 있는 aggregation pipeline입니다.

Aggregation Pipelines의 하나의 단계를 stage라는 개념으로 표현합니다.

 

 

Single Purpose Aggregation Methods

고유한 목적으로 제공되는 함수들입니다.

사용하기에 간단하지만 기능이 부족합니다.

 

count(), distinct() 등의 메서드가 존재합니다.