Join us Sept 17 at .local NYC! Use code WEB50 to save 50% on tickets. Learn more >
MongoDB Event
Docs Menu
Docs Home
/ / /
C#/ .NET 드라이버
/

집계 파이프라인 단계

이 페이지에서는 .NET/ C# 드라이버 의 메서드를 사용하여 집계 파이프라인 및 파이프라인 단계를 생성하는 방법을 학습 수 있습니다.

.NET/ C# 드라이버 사용하면 빌더 메서드 또는 BSON 문서를 통해 집계 파이프라인 빌드 할 수 있습니다. 이러한 각 접근 방식에 대해 자세히 학습 다음 섹션을 참조하세요.

다음과 같은 방법으로 형식이 안전한 집계 파이프라인 빌드 할 수 있습니다.

  • EmptyPipelineDefinition<TDocument> 객체 생성합니다. 이 객체 에서 관련 집계 메서드로 호출을 연결합니다. 그런 다음 파이프라인 객체 IMongoCollection<TDocument>.Aggregate() 메서드에 전달합니다.

  • IMongoCollection<TDocument>.Aggregate() 메서드를 호출합니다. 이 메서드 호출에서 관련 집계 메서드로 호출을 연결합니다.

EmptyPipelineDefinition 또는 Aggregate 탭 선택하여 각 접근 방식에 해당하는 코드를 확인합니다.

// Defines the aggregation pipeline
var pipeline = new EmptyPipelineDefinition<Movie>()
.Match(...)
.Group(...)
.Merge(...);
// Executes the aggregation pipeline
var results = collection.Aggregate(pipeline);
// Defines and executes the aggregation pipeline
var results = collection.Aggregate()
.Match(...)
.Group(...)
.Merge(...);

일부 집계 단계에는 .NET/ C# 드라이버 에 해당 메서드가 없습니다. 이러한 단계를 파이프라인 에 추가하려면 BsonDocument 객체 또는 문자열 리터럴을 사용하여 Query API 구문으로 단계를 구성합니다. 그런 다음 BSON 문서 PipelineDefinitionBuilder.AppendStage() 메서드에 전달합니다. 이 구문은 집계 파이프라인 의 모든 단계를 지원하지만 유형 힌트나 유형 안전성은 제공하지 않습니다.

다음 코드 예시 빈 집계 파이프라인 에 $unset 단계를 추가하는 방법을 보여 줍니다.

var pipeline = new EmptyPipelineDefinition<BsonDocument>()
.AppendStage<BsonDocument, BsonDocument, BsonDocument>("{ $unset: 'field1' }");

중요

BsonDocument 를 사용하여 파이프라인 단계를 정의하는 경우 운전자 BsonClassMap 속성, 직렬화 속성 또는 직렬화 규칙을 인식하지 못합니다. BsonDocument 에서 사용하는 필드 이름은 MongoDB Server 에 저장된 필드 이름과 일치해야 합니다.

다음 표에는 집계 파이프라인 단계에 해당하는 .NET/ C# 드라이버 의 빌더 메서드가 나열되어 있습니다. 집계 단계에 대해 자세히 학습 이에 해당하는 C# 메서드에 대한 코드 예시 보려면 MongoDB Server 매뉴얼의 단계 이름에 있는 해당 참조 페이지 링크를 클릭하세요.

집계 단계가 테이블에 없는 경우 운전자 이에 대한 빌더 메서드를 제공하지 않습니다. 이 경우 BsonDocument 구문을 사용하여 파이프라인에 단계를 추가해야 합니다.

애그리게이션 단계
설명
빌더 메서드

지정된 표현식과 버킷 경계를 기반으로 수신 문서를 버킷이라는 그룹으로 분류합니다.

Bucket()

지정된 표현식을 기반으로 수신 문서를 버킷이라는 특정 수의 그룹으로 분류합니다. 버킷 경계는 지정된 수의 버킷에 문서를 고르게 분산할 수 있도록 자동으로 결정됩니다.

BucketAuto()

컬렉션 에 대한 변경 스트림 커서 반환합니다. 이 단계는 집계 파이프라인 에서 한 번만 발생할 수 있으며 첫 번째 단계로 발생해야 합니다.

ChangeStream()

16 MB를 초과하는 대규모 변경 스트림 이벤트를 변경 스트림 커서 에 반환되는 작은 조각으로 분할합니다.

$changeStreamSplitLargeEvent$changeStream 파이프라인 에서만 사용할 수 있으며, 이 단계는 파이프라인 의 마지막 단계여야 합니다.

ChangeStreamSplitLargeEvent()

집계 파이프라인의 이 단계에 있는 문서 수를 반환합니다.

Count()

필드의 특정 값이 누락된 문서 시퀀스에서 새 문서를 만듭니다.

Densify()

입력 표현식에서 리터럴 문서를 반환합니다.

Documents()

동일한 입력 문서 세트의 단일 단계에서 여러 집계 파이프라인을 처리합니다. 단일 단계에서 여러 차원 또는 패싯에 걸쳐 데이터를 특성화할 수 있는 다면적 집계를 생성할 수 있습니다.

Facet()

컬렉션 에 대해 재귀 검색 수행합니다. 이 메서드는 해당 문서 에 대한 재귀 검색 의 순회 결과를 포함하는 각 출력 문서 에 새 배열 필드 추가합니다.

GraphLookup()

지정된 식별자 표현식 으로 입력 문서를 그룹화하고, 지정된 경우 축적자 표현식을 각 그룹 에 적용합니다. 모든 입력 문서를 소비하고 각 고유 그룹 하나의 문서 출력합니다. 출력 문서에는 식별자 필드 와 누적된 필드(지정된 경우)만 포함됩니다.

Group()

수정되지 않은 처음 n 개의 문서를 파이프라인에 전달하며, 여기서 n 은 지정된 제한입니다. 각 입력 문서 에 대해 문서 1개(처음 n 개 문서에 대해) 또는 문서 0개(처음 n 개 문서 이후)를 출력합니다.

Limit()

동일한 데이터베이스의 다른 컬렉션에 왼쪽 외부 조인을 수행하여 '조인된(joined)' 컬렉션의 문서를 필터링해 처리합니다.

Lookup()

일치하는 문서만 수정되지 않은 상태로 다음 파이프라인 단계로 전달될 수 있도록 문서 스트림을 필터링합니다. 각 입력 문서에서 하나의 문서(일치하는 문서) 또는 0개의 문서(일치하지 않는 문서)를 출력합니다.

Match()

집계 파이프라인 의 결과 문서를 컬렉션 에 씁니다. 이 단계에서는 (새 문서 삽입, 문서 병합, 문서 교체, 기존 문서 유지, 작업 실패, 사용자 지정 업데이트 파이프라인 으로 문서 프로세스 ) 결과를 출력 컬렉션 에 통합할 수 있습니다. 이 단계를 사용하려면 파이프라인 의 마지막 단계여야 합니다.

Merge()

집계 파이프라인 의 결과 문서를 컬렉션 에 씁니다. 이 단계를 사용하려면 파이프라인 의 마지막 단계여야 합니다.

Out()

새 필드를 추가하거나 기존 필드를 제거하는 등 스트림의 각 문서 모양을 변경합니다. 각 입력 문서에 대해 하나의 문서를 출력합니다.

Project()

문서를 특정 내장된 문서로 바꿉니다. 이 작업은 _id 필드를 포함하여 입력 문서의 모든 기존 필드를 대체합니다. 입력 문서에 내장된 문서를 지정하여 내장된 문서를 최상위 수준으로 승격합니다.

$replaceWith 단계는 $replaceRoot 단계의 별칭입니다.

ReplaceRoot()

문서를 특정 내장된 문서로 바꿉니다. 이 작업은 _id 필드를 포함하여 입력 문서의 모든 기존 필드를 대체합니다. 입력 문서에 내장된 문서를 지정하여 내장된 문서를 최상위 수준으로 승격합니다.

$replaceWith 단계는 $replaceRoot 단계의 별칭입니다.

ReplaceWith()

입력에서 지정된 수의 문서를 임의로 선택합니다.

Sample()

Atlas 컬렉션에서 하나 이상의 필드에 대한 전체 텍스트 검색을 수행합니다.

이 단계는 MongoDB Atlas 클러스터에서만 사용할 수 있으며 자체 관리형 배포서버에는 사용할 수 없습니다. 자세히 학습하려면 Atlas 문서에서 Atlas Search 집계 파이프라인 단계 를 참조하세요.

Search()

Atlas 컬렉션에 대한 Atlas Search 쿼리에 대해 다양한 유형의 메타데이터 결과 문서를 반환합니다.

이 단계는 MongoDB Atlas 클러스터에서만 사용할 수 있으며 자체 관리형 배포서버에는 사용할 수 없습니다. 자세히 학습하려면 Atlas 문서에서 Atlas Search 집계 파이프라인 단계 를 참조하세요.

SearchMeta()

문서에 새 필드를 추가합니다. Project() 메서드와 마찬가지로 이 메서드는 입력 문서의 기존 필드와 새로 추가된 필드를 모두 포함하는 출력 문서에 새 필드를 추가하여 스트림 의 각 문서 재구성합니다.

Set()

문서를 창으로 그룹화하고 각 창의 문서에 하나 이상의 연산자를 적용합니다.

SetWindowFields()

처음 n 개의 문서를 건너뛰고(여기서 n 은 지정된 건너뛰기 번호) 나머지 문서는 수정되지 않은 상태로 파이프라인에 전달됩니다. 각 입력 문서에 대해 문서 0개(처음 n 개 문서에 대해) 또는 문서 1개(처음 n 개 문서 이후인 경우)를 출력합니다.

Skip()

지정된 정렬 키를 기준으로 문서 스트림 다시 정렬합니다. 문서는 수정되지 않은 상태로 유지됩니다. 각 입력 문서 에 대해 하나의 문서 출력합니다.

Sort()

지정된 표현식의 값을 기준으로 들어오는 문서를 그룹화한 다음 각 고유 그룹의 문서 수를 계산합니다.

SortByCount()

두 컬렉션의 파이프라인 결과를 단일 결과 설정하다 로 결합합니다.

UnionWith()

입력 문서에서 배열 필드 분해하여 요소에 대한 문서 출력합니다. 각 출력 문서 배열 요소 값으로 바꿉니다. 각 입력 문서에 대해 n 문서를 출력하며, 여기서 n 은 배열 요소의 개수입니다. 빈 배열 의 경우 n 은 0일 수 있습니다.

Unwind()

Atlas 컬렉션의 지정된 필드에 있는 벡터에 대해 ANN 검색을 수행합니다.

이 단계는 MongoDB Atlas 클러스터에서만 사용할 수 있으며 자체 관리형 배포서버에는 사용할 수 없습니다.

VectorSearch()

집계 파이프라인 어셈블에 대해 자세히 학습하려면 MongoDB Server 매뉴얼에서 집계 파이프라인 을 참조하세요.

파이프라인 단계 생성에 학습 보려면 MongoDB Server 매뉴얼의 애그리게이션 단계 를 참조하세요.

이 페이지에 사용된 메서드 및 클래스에 대한 자세한 내용은 다음 API 설명서를 참조하세요.

돌아가기

집계

이 페이지의 내용