Share via


집계 파이프라인 시작

집계 파이프라인은 개발자가 컬렉션에서 고급 데이터 분석 및 조작을 수행할 수 있는 강력한 도구입니다. 파이프라인은 계산된 출력을 생성하기 위해 입력 문서에서 수행되는 일련의 데이터 처리 작업입니다. 파이프라인 단계는 입력 문서를 처리하고 결과를 다음 단계로 전달합니다. 각 단계는 필터링, 그룹화, 정렬 및 변환과 같은 데이터에 대한 특정 작업을 수행합니다.

기본 구문

집계 파이프라인의 기본 구문은 다음과 같습니다.

db.collection.aggregate([    { stage1 },    { stage2 },    ...    { stageN }])

여기서 db.collection은 집계를 수행하려는 MongoDB 컬렉션이고 stage1, stage2, ..., stageN은 적용하려는 파이프라인 단계입니다.

샘플 단계

Cosmos DB for MongoDB는 다음을 포함하여 파이프라인에서 사용할 수 있는 다양한 단계를 제공합니다.

  • $match: 지정된 조건과 일치하는 문서만 전달하도록 문서를 필터링합니다.
  • $project: 필드를 추가, 제거 또는 업데이트하여 문서를 새 양식으로 변환합니다.
  • $group: 하나 이상의 필드로 문서를 그룹화하고 그룹화된 데이터에 대해 다양한 집계 함수를 수행합니다.
  • $sort: 지정된 필드를 기준으로 문서를 정렬합니다.
  • $skip: 지정된 수의 문서를 건너뜁니다.
  • $limit: 다음 단계로 전달되는 문서의 수를 제한합니다.
  • $unwind: 입력 문서에서 배열 필드를 분해하여 각 요소에 대한 문서를 출력합니다.

사용 가능한 모든 단계를 보려면 지원되는 기능을 참조하세요.

예제

다음은 집계 파이프라인을 사용하여 데이터에 대한 다양한 작업을 수행하는 방법에 대한 몇 가지 예입니다.

필터링: "quantity" 필드가 20보다 큰 문서를 필터링하려면 다음 파이프라인을 사용할 수 있습니다.

db.collection.aggregate([
    { $match: { quantity: { $gt: 20 } } }
])

그룹화: "category" 필드별로 문서를 그룹화하고 각 그룹의 총 "quantity"를 계산하려면 다음 파이프라인을 사용할 수 있습니다.

db.collection.aggregate([
    { $group: { _id: "$category", totalQuantity: { $sum: "$quantity" } } }
])

정렬: "price" 필드를 기준으로 문서를 내림차순으로 정렬하려면 다음 파이프라인을 사용할 수 있습니다.

db.collection.aggregate([
    { $sort: { price: -1 } }
])

변환: "price"가 100보다 큰 문서에 새 필드 "discount"를 추가하려면 다음 파이프라인을 사용할 수 있습니다.

db.collection.aggregate([
    { $project: { item: 1, price: 1, discount: { $cond: [{ $gt: ["$price", 100] }, 10, 0 ] } } }
])

풀기: 배열 필드 'tags'에서 모든 하위 문서를 분리하고 각 값에 대한 새 문서를 만들려면 다음 파이프라인을 사용할 수 있습니다.

db.collection.aggregate([
    { $unwind: "$tags" }
])

여러 단계의 예

db.sales.aggregate([
  { $match: { date: { $gte: "2021-01-01", $lt: "2021-03-01" } } },
  { $group: { _id: "$category", totalSales: { $sum: "$sales" } } },
  { $sort: { totalSales: -1 } },
  { $limit: 5 }
])

이 예에서는 "date", "category" 및 "sales" 필드가 있는 문서가 있는 "sales"라는 샘플 컬렉션을 사용하고 있습니다.

첫 번째 단계 { $match: { date: { $gte: "2021-01-01", $lt: "2021-03-01" } } }은 "date" 필드를 기준으로 문서를 필터링하고 2021년 1월 1일부터 2021년 2월 28일 사이에 날짜가 있는 문서만 표시됩니다. "YYYY-MM-DD" 형식의 문자열 날짜 형식을 사용하고 있습니다.

두 번째 단계 { $group: { _id: "$category", totalSales: { $sum: "$sales" } } }는 "category" 필드별로 문서를 그룹화하고 각 그룹의 총 판매액을 계산합니다.

세 번째 단계 { $sort: { totalSales: -1 } } "totalSales" 필드를 기준으로 문서를 내림차순으로 정렬합니다.

네 번째 단계 { $limit: 5 }는 다음 단계로 전달되는 문서의 수를 상위 5개로 제한합니다.

결과적으로 파이프라인은 지정된 날짜 범위에 대한 총 판매액 기준 상위 5개 범주를 반환합니다.

다음 단계