문서 메뉴
문서 홈
/ / /
Node.js 드라이버
/

집계

이 페이지의 내용

  • 개요
  • 비유
  • 집계 및 쿼리 작업 비교
  • 참조
  • 실행 가능한 예제
  • 애그리게이션 예시
  • 추가 예제

이 가이드에서는 MongoDB Node.js 드라이버에서 애그리게이션 연산을 사용하는 방법을 배울 수 있습니다.

애그리게이션 작업은 MongoDB에서 축소 및 요약된 결과를 생성하는 데 사용할 수 있는 표현식입니다. MongoDB의 애그리게이션 프레임워크를 사용하면 하나 이상의 단계로 구성된 파이프라인을 만들 수 있으며, 각 단계는 데이터에 대해 특정 작업을 수행합니다.

애그리게이션 파이프라인은 자동차 공장과 비슷하다고 생각할 수 있습니다. 자동차 제조에는 조립 라인으로 구성된 조립 스테이션을 사용해야 합니다. 각 스테이션에는 드릴 및 용접 기구과 같은 특수 도구가 있습니다. 공장에서는 초기 부품과 재료를 완제품으로 변환하고 조립합니다.

집계 파이프라인은 조립 라인이고, 집계 단계는 조립 스테이션이며, 표현식 연산자는 특수 도구입니다.

find() 메서드와 같은 쿼리 작업을 사용하면 다음 조치를 수행할 수 있습니다.

  • 반환할 문서 선택

  • 반환할 필드 선택

  • 결과 정렬

애그리게이션 작업을 사용하여 다음 조치를 수행할 수 있습니다.

  • 모든 쿼리 작업 수행

  • 필드 이름 바꾸기

  • 필드 계산

  • 데이터 요약

  • 그룹 값

집계 작업에는 제한 사항이 있습니다.

  • 반환된 문서는 16메가바이트의 BSON 문서 크기 제한을 초과하지 않아야 합니다.

  • 파이프라인 단계의 메모리 제한은 기본적으로 100메가바이트입니다. AggregateOptionsallowDiskUse 속성을 true로 설정하여 이 제한을 초과할 수 있습니다. 자세한 내용은 AggregateOptions API 설명서를 참조하세요.

중요

$graphLookup 예외

$graphLookup 단계는 100MB의 엄격한 메모리 제한을 가지며 allowDiskUse를 무시합니다.

표현식 연산자의 전체 목록을 보려면 서버 매뉴얼의 애그리게이션 연산자 를 참조하세요.

집계 파이프라인 어셈블에 대해 알아보고 예제를 보려면 서버 매뉴얼에서 집계 파이프라인 을 참조하세요.

파이프라인 단계 생성에 대해 자세히 알아보려면 서버 매뉴얼의 애그리게이션 단계 를 참조하세요.

이 예제에서는 레스토랑에 대한 샘플 데이터를 사용합니다. 다음 코드는 aggregation 데이터베이스의 restaurants 컬렉션에 데이터를 삽입합니다.

const db = client.db("aggregation");
const coll = db.collection("restaurants");
// Create sample documents
const docs = [
{ stars: 3, categories: ["Bakery", "Sandwiches"], name: "Rising Sun Bakery" },
{ stars: 4, categories: ["Bakery", "Cafe", "Bar"], name: "Cafe au Late" },
{ stars: 5, categories: ["Coffee", "Bakery"], name: "Liz's Coffee Bar" },
{ stars: 3, categories: ["Steak", "Seafood"], name: "Oak Steakhouse" },
{ stars: 4, categories: ["Bakery", "Dessert"], name: "Petit Cookie" },
];
// Insert documents into the restaurants collection
const result = await coll.insertMany(docs);

MongoDB 배포서버에 연결하는 방법에 대한 자세한 내용은 연결 가이드를 참조하세요.

애그리게이션을 수행하려면 애그리게이션 단계 목록을 collection.aggregate() 메서드에 전달합니다.

이 예제에서 aggregation pipeline은 다음 애그리게이션 단계를 사용합니다.

  • $match 단계는 categories 배열 필드에 Bakery 요소가 포함된 문서를 필터링합니다.

  • 일치하는 문서를 stars 필드별로 그룹화하여 stars의 각 고유 값에 대한 문서 수를 누적하는 $group 단계입니다.

// Define an aggregation pipeline with a match stage and a group stage
const pipeline = [
{ $match: { categories: "Bakery" } },
{ $group: { _id: "$stars", count: { $sum: 1 } } }
];
// Execute the aggregation
const aggCursor = coll.aggregate(pipeline);
// Print the aggregated results
for await (const doc of aggCursor) {
console.log(doc);
}

이 예시는 다음과 같은 출력을 생성합니다.

{ _id: 4, count: 2 }
{ _id: 3, count: 1 }
{ _id: 5, count: 1 }

자세한 내용은 집계() API 문서를 참조하세요.

일반적인 애그리게이션 작업에 대한 단계별 설명을 보려면 애그리게이션 튜토리얼을 참조하세요.

MongoDB 웹사이트의 Node.js를 사용한 집계 프레임워크 튜토리얼 블로그 게시물에서 다른 집계 파이프라인 예제를 찾을 수 있습니다.

← Promises