본문 바로가기

과목/빅데이터

Aggregation

Aggregation Pipeline

Pipeline Operators

Pipeline Expressions

Case Studies


What is aggregation pipeline?

MongoDB의 집계 프레임워크는 데이터 처리 파이프라인의 개념을 모델로 한다.

document는 그 document를 집계된 결과로 변환하는 다단계 파이프라인을 입력한다.

파이프라인은 mongoDB에서 네이티브 작업을 사용하는 효율적인 데이터 집계를 제공한다.

MongoDB에서 데이터 집계에 선호되는 방법

MongoDB는 db.collection.aggregate() 함수를 제공한다.


Aggregation Pipeline 예

orders라는 컬렉션에서 status의 값이 A인 것을 찾고 _id가 같은 것끼리 그룹화하고 amount의 총 합을 구한다.



Pipeline Operators (Pipeline Stages)

MongoDB 집계 파이프라인은 document들이 그 파이프라인을 통과하면 document를 변환하는 스테이지로 구성된다

$project

$sort

$limit

$skip

$unwind (언와인드, 풀다)

$match

$group

$count

파이프라인 표현식은 입력 document에 적용될 변환을 지정한다.

$sum

$avg

$min

$max

$push

$addToSet

$first

$last


$project

요청된 필드가 있는 문서를 파이프라인의 다음 스테이지로 통과시킴

{$project : {표현식}}

상세 설명


$sort

모든 입력 document를 정렬하고 정렬된 순서로 있는 파이프라인에 그것들을 반환함

{$sort : {필드1 : 정렬 순서, 필드2 : 정렬순서}}

정렬할 필드와 정렬할 순서를 지정하는 document 사용


$limit

파이프라인의 다음 스테이지로 지나갈 document의 수를 제한함

{$limit : 양의 정수}

전달할 document의 최대 수를 지정하는 양의 정수를 사용


$skip

스테이지로 전달되는 지정된 document의 수를 건너 뛰고 다음 스테이지로 갈 남겨진 document를 전달

{$skip : 양의 정수}


$unwind

입력 document로부터 배열 필드를 분리해서 각 요소에 대한  document를 출력한다.

각 출력 document는 배열 필드의 값이 요소로 대체된 입력 document다

{$unwind : 필드 경로}

참고


$match

지정된 조건과 맞는 document만을 다음 파이프라인 스테이지로 전달하기 위한 필터

{$match : {질의}}

$match는 집계 파이프라인에 있는 document의 총 개수를 제한하기 때문에 가능한 일찍 써야한다.

참고


$group

몇가지 지정된 표현식으로 document를 묶고 각 구분되는 묶음을 다음 스테이지에 출력한다.

출력 document는 키로 구분되는 묶음을 포함하는 _id 필드가 있다.

_id 필드는 필수다.

{$group : {_id : 표현식 , 필드1 : {accumulator1 : 표현식}, ... } }

accumulator??


$count

스테이지에 입력된 document 수를 반환하는 document

{$count : 문자열}

문자열은 값이 count인 출력 필드의 이름

문자열은 비어있지 않은 문자열이어야하며 $로 시작하지 않아야하고 .을 포함하지 않아야 한다.


case studies




MongoDB for Time Series Data Part 2: Analyzing Time Series Data Using the Aggregation Framework and Hadoop



'과목 > 빅데이터' 카테고리의 다른 글

MongoDB 개요  (0) 2018.04.27
MongoDB installation 몽고디비 설치  (0) 2018.04.21
Indexing  (0) 2018.04.20
MongoDB 개요 및 간단 설명  (0) 2018.04.20
NoSQL Databases  (0) 2018.04.19