mongoDB를 시작할 때, 당신은 넓은 범위의 쿼리를 위해 find()명령어를 사용할 것이다. 하지만, 당신의 쿼리가 점점 진화할 수록, 당신은 Aggregation에 대해 알아야할 것이다.

이 글에서, 몽고DB의 aggregation query를 작성하는 주요 원칙과 인덱스를 활용한 최적화 방법을 설명합니다.

Aggregation이란?

Aggregation은 여러 단계를 거치는 방법을 통해 collection 내의 많은양의 문서들을 처리하는 방법입니다. stage들은 파이프라인을 생성합니다. 파이프라인 내에서 filter, sort, group, reshape, 문서 수정을 합니다.

Aggregation의 가장 전형적인 유형중 하나는 문서의 그룹을 집계값을 계산하는 것입니다. 이는 SQL의 기본적인 집계인 GROUP BY절과 COUNT, SUM, AVG 기능과 비슷합니다. MongoDB Aggregation은 더 나아가 join과 같은 수행을 할 수 있고, 문서의 형태를 변경하거나, 새롭게 만들거나, 기존 컬렉션을 업데이트 하는 등의 기능을 수행할 수 있습니다.

mongoDB에서 집계 데이터를 얻기위한 방법이 있지만, aggregation framework는 대부분의 작업에 권장되는 방식입니다.

find() 쿼리에 붙어 빠르게 사용할 수 있는 단일 목적의 estimateDocumentCount(), count(), distinct()가 있지만, 범위가 제한됩니다.

map-reduce 프레임워크는 aggregation framework의 처리기이고, 사용하기 더 어렵습니다. mongoDB는 해당 기능을 더이상 사용하지 않습니다.

mongoDB aggregation 파이프라인은 어떻게 동작하나요

전형적인 mongoDB aggregation 파이프라인을 나타낸 그림입니다.

Untitled