본문 바로가기
MongoDB/MongoDB Aggregation 다루기

[MongoDB Aggregation] 4. 주요 accumulator(1) - $sum과 $avg 사용하여 합계과 평균 계산하기

by Fletcher 2024. 8. 20.

 

반갑습니다!

 

이번 포스트에서는 주요 누산식(accumulator) 중 하나인

$sum과 $avg에 대해서 알아보겠습니다

 

 

 

1. 값을 누적하여 합계 계산 : $sum

 

누산식들은 보통 $group 작업과 많이 사용됩니다 ^^

샘플 코드를 살펴보면 stage1에 해당하는 작업으로 먼저 그룹화가 진행되었는데요

_id 필드로 기준 삼을 컬럼은 year 컬럼이 되겠습니다

 

그럼 해당 영화들의 개봉 연도별로 그룹화가 진행되어 집계되는데요

각 연도별로 개봉한 영화의 합이 어떻게 되는지에 대해서 totalMovies라는 이름의 컬럼을 만들어서

$sum 키워드를 이용한 합계값을 매핑하는 명령어 구조가 되겠습니다 ^^

 

해서 콘솔에 출력된 결과를 보면 _id 컬럼에는 영화의 개봉 연도 정보인 year의 값들이,

그룹화 후 새로 만든 컬럼인 totalMovies 컬럼에는 각 연도별 개봉 영화 수에 대한 합계 값이

매핑이 된 것을 볼 수가 있겠습니다 ^^

 

 

 

 

 

2. 값의 평균을 계산 : $avg

 

그 다음에는 $avg에 대한 예시인데요

마찬가지로 year 컬럼을 _id로 기준 삼아서 그룹화를 진행하겠습니다

대신 이번에는 imdb의 rating 정보에 대해 평균값을 구해서

averageRating 컬럼에 매핑시켜서 콘솔창에 출력했습니다 ^^

 

여기서 잠깐,

$avg 연산의 대상이 된 imdb.rating이 무슨 의미인지

자세히 살펴보도록 하겠습니다 ^^

 

 

movies 컬렉션에 있는 도큐먼트들은 수많은 필드들을 갖고 있는데요

그 중에 필드의 이름이 imdb인 것이 있습니다

이 컬럼은 배열 형태의 데이터 타입을 갖는데요

해당 항목을 더블 클릭해서 어떤 요소들을 갖고 있는지 한 번 조회해보겠습니다 ^^

 

 

 

imdb라는 필드가 갖는 배열에는

rating, votes, id 세 가지의 정보가 elements로 담겨있습니다 ^^

이렇게 해당 필드가 갖는 데이터 타입이 배열일 때에는

하위 목록에 접근하기 위해서 imdb.rating의 구조로 닷 오퍼레이터를 이용하여 접근합니다 ^^

 

풀어서 말하자면,

imdb 컬럼의 rating 정보를 기준으로 $avg 연산을 하라는 의미인거죠!

 

 

 

이번 포스트에서는 주요 누산식 중 하나인

$sum과 $avg에 대해서 알아보았습니다 ^^

다음 포스트에 이어서 나머지 내용들도 살펴보도록 하겠습니다!