다음을 통해 공유


$sortByCount (집계)

집계 파이프라인의 $sortByCount 단계는 지정된 식에 따라 문서를 그룹화한 다음, 각 그룹의 문서 수를 내림차순으로 정렬하는 데 사용됩니다. 이 $sortByCount 단계는 데이터 세트 내에서 가장 일반적인 값을 빠르게 식별하는 데 유용합니다.

문법

$sortByCount 단계의 구문은 다음과 같습니다.

{
  $sortByCount: <expression>
}

매개 변수

설명
expression 이 구문은 문서를 그룹화하고 계산할 필드 또는 계산 식입니다.

예시

앞에서 설명한 대로 구조화된 문서가 있는 stores로 명명된 컬렉션을 생각해 보세요. 이름을 기준으로 가장 일반적인 프로모션 이벤트를 확인하려면 다음과 같이 $sortByCount 단계를 사용할 수 있습니다.

예제 1: 이벤트 이름별 프로모션 이벤트 계산 및 정렬

db.stores.aggregate([
  { $unwind: "$store.promotionEvents" },
  { $sortByCount: "$store.promotionEvents.eventName" }
])

샘플 출력

[
  { "_id": "Summer Sale", "count": 152 },
  { "_id": "Black Friday", "count": 120 },
  { "_id": "Holiday Deals", "count": 98 }
]

이 파이프라인은 다음과 같은 작업을 수행합니다. 1. $unwind를 사용하여 입력 문서에서 promotionEvents 배열 필드를 분해합니다. 2. $sortByCount를 사용하여 eventName 필드를 기준으로 그룹화하고, 각 이벤트 이름의 발생 횟수를 계산하여 발생 횟수 기준의 내림차순으로 결과를 정렬합니다.

예제 2: 범주 이름별 판매량 계산 및 정렬

db.stores.aggregate([
  { $unwind: "$store.sales.salesByCategory" },
  { $sortByCount: "$store.sales.salesByCategory.categoryName" }
])

샘플 출력

[
  { "_id": "Electronics", "count": 152 },
  { "_id": "Clothing", "count": 120 },
  { "_id": "Home Goods", "count": 98 }
]

이 파이프라인은 다음과 같은 작업을 수행합니다. 1. $unwind를 사용하여 입력 문서에서 salesByCategory 배열 필드를 분해합니다. 2. $sortByCount를 사용하여 categoryName 필드를 기준으로 그룹화하고, 각 범주 이름의 발생 횟수를 계산하여 발생 횟수 기준의 내림차순으로 결과를 정렬합니다.