집계
개요
이 가이드에서는 MongoDB Node.js 드라이버에서 집계 연산을 사용하는 방법을 배울 수 있습니다.
집계 작업은 MongoDB에서 축소 및 요약된 결과를 생성하는 데 사용할 수 있는 표현식입니다. MongoDB의 집계 프레임워크를 사용하면 하나 이상의 단계로 구성된 파이프라인을 만들 수 있으며, 각 단계는 데이터에 대해 특정 작업을 수행합니다.
비유
집계 파이프라인은 자동차 공장과 비슷하다고 생각할 수 있습니다. 자동차 제조에는 조립 라인으로 구성된 조립 스테이션을 사용해야 합니다. 각 스테이션에는 드릴 및 용접 기구과 같은 특수 도구가 있습니다. 공장에서는 초기 부품과 재료를 완제품으로 변환하고 조립합니다.
집계 파이프라인은 조립 라인이고, 집계 단계는 조립 스테이션이며, 표현식 연산자는 특수 도구입니다.
집계 및 쿼리 작업 비교
find()
메서드와 같은 쿼리 작업을 사용하면 다음 조치를 수행할 수 있습니다.
반환할 문서 선택
반환할 필드 선택
결과 정렬
집계 작업을 사용하여 다음 조치를 수행할 수 있습니다.
모든 쿼리 작업 수행
필드 이름 바꾸기
필드 계산
데이터 요약
그룹 값
집계 작업에는 제한 사항이 있습니다.
반환된 문서는 16메가바이트의 BSON 문서 크기 제한을 초과하지 않아야 합니다.
파이프라인 단계의 메모리 제한은 기본적으로 100MB입니다.
AggregateOptions
의allowDiskUse
속성을true
로 설정하여 이 제한을 초과할 수 있습니다. 자세한 내용은 AggregateOptions API 설명서를 참조하세요.
참조
표현식 연산자의 전체 목록을 보려면 서버 매뉴얼에서 집계 연산자를 참조하세요.
집계 파이프라인을 조립하는 방법을 배우고 예시를 보려면 서버 매뉴얼에서 집계 파이프라인을 참조하세요.
파이프라인 단계를 만드는 방법에 대해 자세히 알아보려면 서버 매뉴얼의 집계 단계를 참조하세요.
실행 가능한 예시
이 예시에서는 레스토랑에 대한 샘플 데이터를 사용합니다. 다음 코드는 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()
메서드에 전달합니다.
이 예시에서 집계 파이프라인은 다음 집계 단계를 사용합니다.
$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를 사용한 집계 프레임워크 튜토리얼 블로그 게시물에서 더 많은 집계 파이프라인 예시를 찾을 수 있습니다.