MongoDB Aggregation Framework

YoungJoon Suh·2022년 4월 15일
0

Aggregation Framework: 데이터를 파이프라인에 따라 처리할 수 있는 강력한 프레임워크.
Aggregation Framework는 MongoDB에서 데이터를 쿼리하는 가장 간단한 방법 중 하나입니다.
MQL을 사용하는 모든 쿼리는 Aggregation Framework에서도 할 수 있습니다.

Amenities 중 하나로 wifi가 포함되어 있는 도큐먼트를 찾아
price, address 필드만 Projection하는 쿼리를 작성한다면,
db.listingsAndReviews.find(
Query { "amenities" : "Wifi" },
Projection { "price" : 1, "address" : 1, "_id" : 0 } ).pretty()

db.listingsAndReviews.aggregate( [
Query { $match: { "amenities" : "Wifi" } },
Projection { $project : { "price" : 1, "address" : 1, "_id" : 0 } }
] ).pretty()

MQL: find 명령을 사용하여 쿼리와 Projection을 한다.
Aggregation Framework: aggregate 명령을 사용한다.

aggregate를 사용하면 도큐먼트를 필터링하지 않고 그룹으로 데이터를 집계하거나 데어터를 수정할 수 있습니다.
aggregate를 사용하면 데이터 찾기 및 프로젝션 없이 작업을 수행하거나 계산할 수 있습니다.
aggregate를 사용할 땐 대괄호를 이용해 배열을 인자로 사용합니다.
이는 파이프라인처럼 배열 요소의 순서대로 작업을 하기 때문입니다.

Aggregation Framework에서는 파이프라인의 단계에 따라 데이터를 처리할 수 있습니다.

Aggregation Framework는 파이프라인처럼 작동합니다.
각각의 처리 작업은 우리가 나열한 배열의 순서에 의해 결정합니다.
마지막으로 변환한 데이터가 파이프라인의 끝에 나타납니다.

다음 단계의 필터가 더 자세한 필터여야 한다.

group:들어온데이터스트림을여러개로그룹화하는연산자,들어온데이터를가지고여러개의개별저장소로빨아들여그룹화하는연산자이다.group: 들어온 데이터 스트림을 여러개로 그룹화하는 연산자, 들어온 데이터를 가지고 여러 개의 개별 저장소로 빨아들여 그룹화하는 연산자이다. match 등과 같은 필터링 단계가 없으면 데이터 요약, 계산 및 그룹화를 수행할 때 원본 데이터를 수정하지 않는다는 점을 유의해야 합니다.
필터링 단계가 있다면 이를 통과한 데이터를 다음 단계에서 작업합니다.

$group Syntax
listingsAndReviews 컬렉션에서 숙소가 있는 국가와 국가 당 위치한 숙소의 총계 목록을 가져오는 쿼리를 작성한다면, $group을 사용하여 기준에 따라 그룹화할 수 있습니다.
{ $group :
{
_id : , // 표현식을 기준으로 그룹화
<field 1> : {<accumulator 1> : <expression 1>},
... } }

$group 단계
1. 이전 단계에서 도큐먼트를 받을 때 _id 필드에 표현식을 사용하여 이 도큐먼트가 속한 그룹을 식별합니다.
2. $group 구문의 두 번째 부분을 사용하면 파이프라인을 통해 들어오는 데이터에 대해 더 많은 양적 분석을 수행할 수 있습니다.

db.listingsAndReviews.aggregate( [
{ project : { "address" : 1, "_id" : 0 } }, { $group : { _id : "address.country",
"count" : { "$sum" : 1 } } }
] )

  1. total이라는 새로운 필드를 만들어 price의 총합을 구해야 합니다.

파이프라인의 각 단계 순서대로 데이터가 처리됩니다.
이 안의 데이터는 원본데이터를 수정하거나 변경하지 않습니다.
각 단계의 이름 앞에는 가있고(가 있고 (<stage 1>) 그 뒤에는 실행할 작업에 대한 설명 ( : ) 이 옵니다.

  • 요약
    Aggregation Framework는 데이터를 계산, 재구성 및 재정립하는 기능을 통해 MQL의 필터링 기능을 능가하는 강력한 도구입니다.
    Aggregation 파이프라인의 데이터는 파이프라인 내에 있기 때문에 본질적으로 원본 데이터를 수정하거나 변경하지 않습니다.
    Aggregation Framework 문법은 나열된 순서대로 단계가 실행되는 파이프라인의 형태입니다.
    각 단계의 이름 앞에는 $가 있습니다.
    그리고 그 뒤에는 $match 또는 $sum과 같은, 해당 단계에서 실행할 여러 유형의 작업에 대한 설명이 옵니다.
profile
저는 서영준 입니다.

0개의 댓글