개요
이 가이드 에서는 C 운전자 사용하여 집계 작업을 수행하는 방법을 학습 수 있습니다.
집계 작업을 사용하여 MongoDB 컬렉션의 데이터를 프로세스 하고 계산된 결과를 반환할 수 있습니다. 쿼리 API 의 일부인 MongoDB 애그리게이션 프레임워크 는 데이터 처리 파이프라인 개념을 모델로 합니다. 문서는 하나 이상의 단계를 포함하는 파이프라인 에 들어가고, 각 단계는 문서를 변환하여 최종 애그리게이션 결과를 출력합니다.
집계 작업은 자동차 공장과 유사하게 생각할 수 있습니다. 자동차 공장에는 조립 라인이 있으며, 여기에는 드릴 및 용접기와 같은 특정 작업을 수행할 수 있는 특수 도구를 갖춘 조립 스테이션이 있습니다. 원부품이 공장에 들어오면 조립 라인에서 이를 변형하고 조립하여 완제품으로 만듭니다.
집계 파이프라인은 조립 라인이고, 집계 단계는 조립 스테이션이며, 작업 연산자는 특수 도구입니다.
집계 및 찾기 연산 비교
찾기 조치를 사용하여 다음 조치을 수행할 수 있습니다:
반환할 문서 선택
반환할 필드 선택
결과 정렬
집계 조치를 사용하여 다음 조치를 수행할 수 있습니다:
찾기 작업 수행
필드 이름 바꾸기
필드 계산
데이터 요약
그룹 값
제한 사항
집계 작업을 사용할 때는 다음과 같은 제한 사항이 적용 됩니다.
반환된 문서는 BSON 문서 크기 제한인 16 메가바이트를 위반하지 않아야 합니다.
파이프라인 단계의 메모리 제한은 기본값 으로 100 메가바이트입니다.
allowDiskUse옵션을true로 설정하여 이 제한을 초과할 수 있습니다.
애그리게이션 예제
이 가이드의 예시에서는 Atlas 샘플 데이터 세트의 sample_restaurants 데이터베이스에 있는 restaurants 컬렉션을 사용합니다. 무료 MongoDB Atlas 클러스터 생성하고 샘플 데이터 세트를 로드하는 방법을 학습하려면 MongoDB 시작하기 가이드 를 참조하세요.
팁
애그리게이션 튜토리얼 완료
You can find tutorials that provide detailed explanations of common aggregation tasks in the Complete Aggregation Pipeline Tutorials section of the Server manual. Select a tutorial, and then pick C from the Select your language drop-down menu in the upper-right corner of the page.
집계 파이프라인 빌드 및 실행
컬렉션 의 문서에 대해 집계 게이션을 수행하려면 파이프라인 단계를 나타내는 bson_t 구조를 mongoc_collection_aggregate() 함수에 전달합니다.
이 예시 뉴욕시 각 자치구에 있는 베이커리 수의 개수를 출력합니다. 다음 코드는 다음 단계를 포함하는 집계 파이프라인 생성합니다.
A $match stage to filter for documents in which the value of the
cuisinefield is"Bakery".A $group stage to group the matching documents by the
boroughfield, producing a count of documents for each distinct value of that field.
const bson_t *doc; bson_t *pipeline = BCON_NEW("pipeline", "[", "{", "$match", "{", "cuisine", BCON_UTF8("Bakery"), "}", "}", "{", "$group", "{", "_id", BCON_UTF8("$borough"), "count", "{", "$sum", BCON_INT32(1), "}", "}", "}", "]"); mongoc_cursor_t *results = mongoc_collection_aggregate(collection, MONGOC_QUERY_NONE, pipeline, NULL, NULL); bson_error_t error; if (mongoc_cursor_error(results, &error)) { fprintf(stderr, "Aggregate failed: %s\n", error.message); } else { while (mongoc_cursor_next(results, &doc)) { char *str = bson_as_canonical_extended_json(doc, NULL); printf("%s\n", str); bson_free(str); } } bson_destroy(pipeline); mongoc_cursor_destroy(results);
애그리게이션 설명
MongoDB 작업을 실행하는 방법에 대한 정보를 보려면 파이프라인 에서 explain 작업을 실행 하면 됩니다. MongoDB 작업을 설명할 때 실행 계획과 성능 통계를 반환합니다. 실행 계획은 MongoDB 작업을 완료할 수 있는 잠재적인 방법입니다. MongoDB 작업을 설명하도록 지시하면 MongoDB 작업에 대해 선택한 계획과 거부된 실행 계획을 모두 반환합니다.
다음 코드 예시 이전 섹션에 표시된 것과 동일한 집계 실행하지만 mongoc_client_command_simple() 함수를 사용하여 작업 세부 정보를 설명합니다.
bson_t reply; bson_error_t error; bson_t *command = BCON_NEW( "aggregate", BCON_UTF8("restaurants"), "explain", BCON_BOOL(true), "pipeline", "[", "{", "$match", "{", "cuisine", BCON_UTF8("Bakery"), "}", "}", "{", "$group", "{", "_id", BCON_UTF8("$borough"), "count", "{", "$sum", BCON_INT32(1), "}", "}", "}", "]"); if (mongoc_client_command_simple(client, "sample_restaurants", command, NULL, &reply, &error)) { char *str = bson_as_canonical_extended_json(&reply, NULL); printf("%s\n", str); bson_free(str); } else { fprintf(stderr, "Command failed: %s\n", error.message); } bson_destroy(command); bson_destroy(&reply);
추가 정보
집계 단계의 전체 목록은 MongoDB Server 매뉴얼의 집계 단계 를 참조하세요.
집계 파이프라인 을 어셈블하는 학습 에 대해 알아보고 예시를 보려면 MongoDB Server 매뉴얼에서 집계 파이프라인 을 참조하세요.
MongoDB 작업에 학습 보려면 MongoDB Server 매뉴얼의 출력 및 쿼리 계획 설명을 참조하세요.
API 문서
C 운전자 사용하여 집계 작업을 실행하는 방법에 대한 자세한 내용은 다음 API 설명서를 참조하세요.