banner

블로그

Jun 01, 2023

MongoDB에서 집계 파이프라인을 사용하는 방법

MapReduce를 사용해 왔다면 이제 복잡한 작업을 처리하기 위해 MongoDB의 Aggregation Pipeline으로 전환해야 할 때입니다.

집계 파이프라인은 MongoDB에서 복잡한 쿼리를 실행하는 데 권장되는 방법입니다. MongoDB의 MapReduce를 사용해 왔다면 더 효율적인 계산을 위해 집계 파이프라인으로 전환하는 것이 좋습니다.

집계 파이프라인은 MongoDB에서 고급 쿼리를 실행하기 위한 다단계 프로세스입니다. 파이프라인이라는 다양한 단계를 통해 데이터를 처리합니다. 한 수준에서 생성된 결과를 다른 수준의 작업 템플릿으로 사용할 수 있습니다.

예를 들어, 원하는 출력을 얻을 때까지 해당 순서로 정렬하기 위해 일치 작업의 결과를 다른 단계로 전달할 수 있습니다.

집계 파이프라인의 각 단계에는 MongoDB 연산자가 포함되어 있으며 하나 이상의 변환된 문서를 생성합니다. 쿼리에 따라 수준이 파이프라인에 여러 번 나타날 수 있습니다. 예를 들어 다음을 사용해야 할 수도 있습니다.$count또는$sort연산자는 집계 파이프라인 전체에 걸쳐 두 번 이상 단계를 수행합니다.

집계 파이프라인은 단일 쿼리의 여러 단계를 통해 데이터를 전달합니다. 여러 단계가 있으며 MongoDB 문서에서 해당 세부 정보를 찾을 수 있습니다.

아래에서 가장 일반적으로 사용되는 몇 가지를 정의해 보겠습니다.

이 단계는 다른 집계 단계를 시작하기 전에 특정 필터링 조건을 정의하는 데 도움이 됩니다. 이를 사용하여 집계 파이프라인에 포함하려는 일치하는 데이터를 선택할 수 있습니다.

그룹 단계에서는 키-값 쌍을 사용하여 특정 기준에 따라 데이터를 여러 그룹으로 분리합니다. 각 그룹은 출력 문서의 키를 나타냅니다.

예를 들어 다음을 고려해보세요.매상샘플 데이터:

집계 파이프라인을 사용하면 각 제품 섹션의 총 판매량과 최고 판매량을 계산할 수 있습니다.

그만큼_id: $섹션 pair는 섹션을 기준으로 출력 문서를 그룹화합니다. 지정함으로써top_sales_count그리고top_sales 필드에서 MongoDB는 수집자가 정의한 작업을 기반으로 새로운 키를 생성합니다. 이것은 될 수있다$sum,$min,$max, 또는$평균.

당신은 사용할 수 있습니다$건너뛰기 출력에서 지정된 수의 문서를 생략하는 단계입니다. 대개 조별 예선 이후에 발생합니다. 예를 들어 두 개의 출력 문서가 필요하지만 하나를 건너뛰는 경우 집계는 두 번째 문서만 출력합니다.

건너뛰기 단계를 추가하려면$건너뛰기집계 파이프라인에 대한 작업:

정렬 단계에서는 데이터를 내림차순 또는 오름차순으로 정렬할 수 있습니다. 예를 들어 이전 쿼리 예제의 데이터를 내림차순으로 추가 정렬하여 매출이 가장 높은 섹션을 확인할 수 있습니다.

추가$sort이전 쿼리에 대한 연산자:

제한 작업은 집계 파이프라인에 표시할 출력 문서 수를 줄이는 데 도움이 됩니다. 예를 들어$한도연산자를 사용하여 이전 단계에서 반환된 판매량이 가장 높은 섹션을 가져옵니다.

위의 내용은 첫 번째 문서만 반환합니다. 이는 정렬된 출력의 상단에 표시되므로 매출이 가장 높은 섹션입니다.

그만큼$프로젝트 스테이지를 사용하면 원하는 대로 출력 문서의 모양을 지정할 수 있습니다. 사용하여$프로젝트연산자를 사용하면 출력에 포함할 필드를 지정하고 해당 키 이름을 사용자 지정할 수 있습니다.

예를 들어,$프로젝트무대는 다음과 같습니다

를 통해 어떤 모습인지 살펴보겠습니다.$프로젝트 단계. 추가하려면$프로젝트파이프라인에:

이전에 제품 섹션을 기준으로 데이터를 그룹화했으므로 위의 출력 문서에는 각 제품 섹션이 포함됩니다. 또한 집계된 판매량과 최고 판매량이 출력에 포함되도록 보장합니다.총판매량그리고

공유하다