aggregation mongodb
MongoDB의 집계 개요 :
MongoDB의 인증 이전 튜토리얼에서 자세히 설명했습니다. 자세한 MongoDB 교육 시리즈 .
이 자습서에서는 MongoDB의 집계에 대해 알아 봅니다.
간단히 말해서, 집계는 서로 다른 정보 자원을 결합하고 가장 확실한 기록을 제공하는 것을 의미합니다. MongoDB에서는 다른 컬렉션의 정보를 확인하고 그 대가로 단일 레코드를 제공하는 프로세스입니다.
수집 된 데이터에 대해 다양한 작업을 수행하여 유효한 정보 만 추출합니다.
MongoDB에서는 아래와 같이 세 가지 유형의 집계를 사용할 수 있습니다.
- 집계 파이프 라인
- 지도 축소
- 단일 목적 집계
학습 내용 :
집계 파이프 라인
MongoDB의 집계 프레임 워크는 데이터 처리 파이프 라인 개념으로 개발되었습니다. 이 파이프 라인에서는 최종 결과를 집계하기 위해 파이프 라인에 입력되는 문서에 다양한 기능 세트가 적용됩니다.
기본적으로 파이프 라인 내의 모든 문서에 대해 두 가지 작업이 수행됩니다. 첫째, 쿼리가 수행되는 방식과 같이 레코드가 필터링되고 두 번째 단계에서는 문서의 변환이 출력 목적으로 유형을 변경합니다.
반면에 파이프 라인 작업은 문서의 배열과 배열의 정렬, 그룹화, 병합 및 집계에도 사용됩니다. 어떻게 든 파이프 라인을 사용하여 콘텐츠를 요약하거나 레코드의 평균 및 연결을 계산할 수 있습니다.
암호
비밀번호와 동일한 네트워크 보안 키입니다.
db.orders.aggregate(({$match:{status:'A'}},{$group:{_id:'$cust_id', total:{$sum:'$amount'}}}))
그림 1 : Mongo Shell에서
그림 2 : Robo 3T에서
그림 3
지도 축소
MongoDB는 집계 목적으로 Map Reduce 기능도 제공합니다. 일반적으로 Map Reduce에는 두 단계가 있습니다. 첫 번째 단계에서는 각 문서가 처리되고 문서의 공통 및 중복 부분을 내보내 다음 단계를위한 고유 한 레코드를 전달합니다.
두 번째 단계에서는 모든 고유 한 부품이 결합되어 단일 결과를 생성합니다. Map Reduce는 정렬, 필터링 및 문서 수정도 제공합니다.
암호
db.orders.mapReduce(function(){emit(this.cust_id,this.amount);}, function(key,values){return Array.sum(values)},{query:{status:'A'},out: 'order_totals'}).find()
그림 4 : Mongo Shell에서
그림 5 : Robo 3T에서
그림 6
단일 목적 집계
단일 목적 집계에서는 결과를 계산하는 데 하나의 필터 만 적용됩니다. 간단히 말해서 하나의 필터를 기반으로 전체 컬렉션을 집계해야하는 경우 단일 목적 집계 작업을 사용해야합니다.
MongoDB에는 단일 필터링에 대해 세 가지 종류의 집계 작업이 있습니다.
- db.collection.estimatedDocumentCount ()
- db.collection.count ()
- db.collection.distinct ()
위의 모든 작업은 단일 목적 집계에 사용됩니다. 이러한 작업은 일반적인 집계 프로세스에 대한 간단한 액세스 제어를 제공합니다. 이러한 작업은 집계 파이프 라인 및 Map Reduce와 같이 광범위한 필터링 및 정렬을 제공하지 않습니다.
암호
db.orders.distinct('cust_id')
그림 7 : Mongo Shell에서
char *를 int C ++로 변환
그림 8 : Robo 3T에서
그림 9
결론
집계는 평균 결과를 제공하기 위해 정보를 수집하는 프로세스입니다. 분석 목적으로도 사용됩니다. 이 자습서에서는 정보를 처리하기 위해 MongoDB에서 사용할 수있는 세 가지 유형의 집계에 대해 배웠습니다.
MongoDB는 또한 막대한 정보를 수집하는 데 사용되는 맵 축소 방법을 제공합니다. Map Reduce는 주로 빅 데이터에 사용됩니다. 이러한 모든 집계 방법은 레코드 조건과 결과 값을 기반으로 사용됩니다.
다음 자습서에서는 MongoDB의 Projection에 대해 자세히 알아 봅니다.