AI 에이전트의 경우: 문서 인덱스는 https://www.mongodb.com/ko-kr/docs/llms.txt에서 사용할 수 있으며, 모든 페이지의 마크다운 버전은 어떤 URL 경로에 .md를 추가하여 사용할 수 있습니다.
Docs Menu

집계 작업

이 가이드에서는 MongoDB .NET/C# 드라이버를 사용하여 집계 작업을 수행하는 방법을 배울 수 있습니다.

집계 작업은 MongoDB 컬렉션 데이터를 처리하고 계산된 결과를 반환합니다. MongoDB Aggregation 프레임워크는 데이터 처리 파이프라인 개념을 모델로 합니다. 문서는 하나 이상의 단계로 구성된 파이프라인에 들어가고, 이 파이프라인은 문서를 집계된 결과로 변환합니다.

.NET/ C# 드라이버 에서 지원하는 집계 단계에 대해 자세히 학습 애그리게이션 단계를 참조하세요.

애그리게이션 튜토리얼 완료

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.

애그리게이션 작업은 조립 라인이 있는 자동차 공장과 유사하게 작동합니다. 조립 라인에는 특정 작업을 수행하기 위한 특수 도구를 갖춘 스테이션이 있습니다. 예를 들어, 자동차를 만들 때 조립 라인은 프레임에서 시작됩니다. 그런 다음 자동차 프레임이 조립 라인을 이동할 때 각 스테이션은 별도의 부품을 조립합니다. 그 결과는 변형된 최종 제품, 즉 완성된 자동차입니다.

조립 라인은 집계 파이프라인, 개별 스테이션 은 집계 단계, 특수 도구 는 표현식 연산자, 완제품 은 집계된 결과 를 나타 냅니다 .

다음 표에는 찾기 작업으로 수행할 수 있는 다양한 작업과 집계 작업으로 수행할 수 있는 작업이 나열되어 있습니다. 집계 프레임워크는 데이터를 변환하고 조작할 수 있는 확장된 기능을 제공합니다.

작업 찾기
집계 작업

반환할 특정 문서 선택
반환할 필드 선택
결과 정렬
결과 제한
결과 계산

특정 문서를 선택하여 반환
반환할 필드 선택
결과 정렬
결과 제한
결과 계산
결과 그룹화
필드 이름 변경
새 필드 계산
데이터 요약
데이터 세트 연결 및 병합

집계 연산을 수행할 때 다음 제한 사항을 고려합니다.

You can modify the behavior of the Aggregate() method by passing an AggregateOptions object.

The following table describes some AggregateOptions properties:

속성
설명

AllowDiskUse

파이프라인 단계가 100메가바이트 메모리 제한을 초과하여 디스크의 임시 파일에 데이터를 쓰기 (write) 수 있는지 여부를 지정합니다.

BatchSize

각 커서 배치 에서 서버 반환하는 최대 문서 수를 설정합니다.

Collation

작업에 사용할 데이터 정렬을 설정합니다.

Comment

프로파일러 로그에서 더 쉽게 식별할 수 있도록 작업에 대한 주석을 설정합니다.

Hint

작업에 사용할 서버 의 인덱스 설정합니다.

MaxTime

서버 에서 작업의 최대 실행 시간을 설정합니다.

To see a full list of available options, see AggregateOptions Properties in the API documentation.

The following example runs an aggregation pipeline and sets the BatchSize property to 5:

var options = new AggregateOptions { BatchSize = 5 };
var pipeline = new EmptyPipelineDefinition<Movie>()
.Match(...)
.Group(...);
var results = collection.Aggregate(pipeline, options);

Query API 에서 사용할 수 없는 LINQ 또는 빌더 표현식 사용하는 경우 Unsupported filter ... 또는 Expression not supported ... 예외 메시지가 나타날 수 있습니다. 다음과 같은 경우 표현식 사용하지 못할 수 있습니다.

  1. 이에 상응하는 MongoDB 표현이 없는 .NET/ C# 기능 사용하려고 합니다. 예시 를 들어 .NET/ C# 과 MongoDB 데이터 정렬과 관련하여 서로 다른 의미를 가집니다.

  2. 운전자 LINQ 또는 빌더 표현식 에서 Query API 로의 특정 변환을 지원 하지 않습니다. 이는 제공된 쿼리 에 Query API 변환이 없거나 운전자 에 기능 구현되지 않았기 때문에 발생할 수 있습니다.

이러한 예외 중 하나가 발생하면 다음 단계를 시도해 보세요.

  1. MongoDB C# 분석기 를 사용하여 표현식을 분석합니다.

  2. 가능하면 쿼리 간소화하세요.

  3. 쿼리 BsonDocument 객체 또는 JSON 문자열로 제공합니다. FilterDefinition, ProjectionDefinitionPipelineDefinition와 같은 모든 정의 클래스는 BsonDocument 객체 또는 JSON 문자열에서 암시적 변환을 지원 . 예시 들어 다음 필터는 쿼리 또는 집계 에 사용될 때 동일합니다.

    FilterDefinition<Entity> typedFilter = Builders<Entity>.Filter.Eq(e => e.A, 1);
    FilterDefinition<Entity> bsonFilter = new BsonDocument {{ "a", 1 }};
    FilterDefinition<Entity> jsonFilter = "{ a : 1 }";

다음 예시 와 같이 동일한 쿼리 에서 BsonDocument 객체, JSON 문자열, POCO를 결합할 수 있습니다.

FilterDefinition<Entity> filter = Builders<Entity>.Filter
.And(Builders<Entity>.Filter
.Eq(e => e.A, 1), BsonDocument
.Parse("{ b : 2 }"));

참고

BsonDocument 객체 또는 JSON 문자열을 사용하는 경우 필드 이름은 서버 에 저장된 대소문자를 구분하는 이름과 일치해야 합니다. 예시 들어 _id 필드 참조할 때는 필드 이름 _id 을(를) 사용하여 참조해야 합니다.

Query API 수동 클래스 매핑, BSON 직렬화 속성 또는 직렬화 규칙을 인식하지 못하므로 이러한 메커니즘을 사용하여 필드 이름을 변경할 수 없습니다. 예시 들어 문서 에 [BsonElement("first_name")] 주석이 달린 FirstName 필드 포함된 경우 BsonDocument 또는 JSON 문자열 정의에서 해당 필드를 first_name 로 참조해야 합니다.

집계 단계의 전체 목록은 MongoDB Server 매뉴얼의 집계 단계 를 참조하세요.

MongoDB 집계 연산 설명에 대해 알아보려면 결과쿼리 계획 설명을 참조하세요.