문서 메뉴
문서 홈
/
MongoDB 매뉴얼
/ /

aggregation pipeline 단계

이 페이지의 내용

  • 호환성
  • 단계
  • 알파벳순 단계 목록

db.collection.aggregate() 메서드 및 db.aggregate() 메서드에서 파이프라인 단계는 배열로 나타납니다. Atlas UI에서 집계 파이프라인 빌더 를 사용하여 파이프라인 단계를 정렬할 수 있습니다. 문서는 순서대로 단계를 거칩니다.

다음 환경에서 호스팅되는 배포서버에 파이프라인 단계를 사용할 수 있습니다.

  • MongoDB Atlas: 클라우드에서의 MongoDB 배포를 위한 완전 관리형 서비스

$out, $merge, $geoNear$changeStream 단계를 제외한 모든 단계는 파이프라인에 여러 번 나타날 수 있습니다.

참고

구문 및 예제를 포함하여 특정 연산자에 대한 자세한 내용을 보려면 연산자의 참조 페이지에 대한 링크를 클릭하십시오.

db.collection.aggregate( [ { <stage> }, ... ] )
단계
설명

문서에 새 필드를 추가합니다. $project와(과) 유사하게 $addFields은(는) 스트림의 각 문서를 재구성합니다. 특히 입력 문서의 기존 필드와 새로 추가된 필드를 모두 포함하는 출력 문서에 새 필드를 추가합니다.

$set$addFields의 별칭입니다.

지정된 표현식과 버킷 경계를 기반으로 수신 문서를 버킷이라는 그룹으로 분류합니다.
지정된 표현식을 기반으로 수신 문서를 버킷이라는 특정 수의 그룹으로 분류합니다. 버킷 경계는 지정된 수의 버킷에 문서를 고르게 분산할 수 있도록 자동으로 결정됩니다.
컬렉션에서 변경 스트림 커서를 반환합니다. 이 단계는 애그리게이션 파이프라인에서 한 번만 발생할 수 있으며 첫 번째 단계로 발생해야 합니다.
단계 또는 뷰에 관한 통계를 반환합니다.

aggregation pipeline의 이 단계에 있는 문서 수를 반환합니다.

$count 축적자와는 다릅니다.

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

지리 공간적 공간 점과의 근접성을 기준으로 정렬된 문서 스트림을 반환합니다. 지리 공간적 공간 데이터에 $match, $sort, $limit 기능을 통합합니다. 출력 문서에는 추가 거리 필드가 포함되며 위치 식별자 필드가 포함될 수 있습니다.

컬렉션에서 재귀 검색을 수행합니다. 각 출력 문서에 해당 문서에 대한 재귀 검색의 순회 결과를 포함하는 새 배열 필드를 추가합니다.
지정된 식별자 표현식으로 입력 문서를 그룹화하고, 지정된 경우 축적자 표현식을 각 그룹에 적용합니다. 모든 입력 문서를 소비하고 각 개별 그룹당 하나의 문서를 출력합니다. 출력 문서에는 식별자 필드와 누적된 필드(지정된 경우)만 포함됩니다.
컬렉션의 각 인덱스 사용에 관한 통계를 반환합니다.
수정되지 않은 처음 n개 문서를 파이프라인에 전달하며, 여기서 n은 지정된 제한입니다. 각 입력 문서에 대해 문서 1개(처음 n개 문서에 대해) 또는 문서 0개(처음 n개 문서 이후)를 출력합니다.
system.sessions 컬렉션으로 전파될 수 있을 만큼 충분히 오랫동안 활성화된 모든 세션을 나열합니다.
동일한 데이터베이스의 다른 컬렉션에 왼쪽 외부 조인을 수행하여 '조인된(joined)' 컬렉션의 문서를 필터링해 처리합니다.
일치하는 문서만 수정되지 않은 상태로 다음 파이프라인 단계로 전달될 수 있도록 문서 스트림을 필터링합니다. $match는 표준 MongoDB 쿼리를 사용합니다. 각 입력 문서에서 하나의 문서(일치하는 문서) 또는 0개의 문서(일치하지 않는 문서)를 출력합니다.
aggregation pipeline의 결과 문서를 collection에 씁니다. 이 단계에서는 (새 문서 삽입, 문서 병합, 문서 교체, 기존 문서 유지, 작업 실패, 사용자 지정 업데이트 파이프라인으로 문서 프로세스) 결과를 출력 collection에 통합할 수 있습니다. $merge 단계를 사용하려면 파이프라인의 마지막 단계여야 합니다.
aggregation pipeline의 결과 문서를 collection에 씁니다. $out 단계를 사용하려면 파이프라인의 마지막 단계여야 합니다.
collection에 대한 계획 캐시 정보를 반환합니다.

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

기존 필드 제거에 대한 내용은 $unset도 참조하세요.

문서 자체에 저장된 정보를 기반으로 각 문서의 콘텐츠를 제한해 스트림의 각 문서를 재구성합니다. $project$match의 기능을 통합합니다. 필드 수준 편집을 구현하는 데 사용할 수 있고, 각 입력 문서에서 문서 1개 또는 0개를 출력합니다.

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

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

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

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

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

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

참고

$search 는 MongoDB Atlas cluster에서만 사용할 수 있으며 자체 managed 배포서버에는 사용할 수 없습니다.

문서에 새 필드를 추가합니다. $project와(과) 유사하게 $set은(는) 스트림의 각 문서를 재구성합니다. 특히 입력 문서의 기존 필드와 새로 추가된 필드를 모두 포함하는 출력 문서에 새 필드를 추가합니다.

$set$addFields 단계의 별칭입니다.

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

버전 5.0에 추가.

건너뛰기 수가 n으로 지정된 경우 첫 n개의 문서를 건너뛰고 나머지 문서를 수정되지 않은 상태로 파이프라인에 전달합니다. 각 입력 문서에서 문서 0개(첫 n개 문서에서) 또는 문서 1개(첫 n개 문서 이후)를 출력합니다.
지정된 정렬 키를 기준으로 문서 스트림을 재정렬합니다. 주문만 변경되고 문서는 수정되지 않은 상태로 유지되며, 각 입력 문서에서 하나의 문서를 출력합니다.
지정된 표현식의 값을 기준으로 들어오는 문서를 그룹화한 다음 각 고유 그룹의 문서 수를 계산합니다.
두 collection의 union을 수행합니다. 즉, 두 collection의 파이프라인 결과를 단일 결과 세트로 결합합니다.

문서에서 필드를 제거/제외합니다.

$unset는 필드를 제거하는 $project 단계의 별칭입니다.

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

파이프라인 단계에서 사용할 집계 표현식 연산자는 집계 파이프라인 연산자를 참조하세요.

버전 3.6부터 MongoDB는 db.aggregate() 메서드도 제공합니다.

db.aggregate( [ { <stage> }, ... ] )

다음 단계에서는 db.collection.aggregate() 메서드가 아닌 db.aggregate() 메서드를 사용합니다.

단계
설명
컬렉션에서 변경 스트림 커서를 반환합니다. 이 단계는 애그리게이션 파이프라인에서 한 번만 발생할 수 있으며 첫 번째 단계로 발생해야 합니다.
MongoDB deployment의 활성 및/또는 휴면 작업에 대한 정보를 반환합니다.
현재 연결된 mongos 또는 mongod 인스턴스에서 최근에 사용 중인 모든 활성 세션을 나열합니다. 이러한 세션이 아직 system.sessions collection으로 전파되지 않았을 수 있습니다.

업데이트에 집계 파이프라인을 아래에서 사용할 수 있습니다.

업데이트의 경우 파이프라인은 다음 단계로 구성될 수 있습니다.

이름
설명
문서에 새 필드를 추가합니다. 입력 문서의 기존 필드와 새로 추가된 필드를 모두 포함하는 문서를 출력합니다.
지정된 표현식과 버킷 경계를 기반으로 수신 문서를 버킷이라는 그룹으로 분류합니다.
지정된 표현식을 기반으로 수신 문서를 버킷이라는 특정 수의 그룹으로 분류합니다. 버킷 경계는 지정된 수의 버킷에 문서를 고르게 분산할 수 있도록 자동으로 결정됩니다.
collection 또는 데이터베이스에 대한 change stream 커서를 반환합니다. 이 단계는 집계 파이프라인에서 한 번만 발생할 수 있으며 첫 번째 단계로 발생해야 합니다.
단계 또는 뷰에 관한 통계를 반환합니다.

aggregation pipeline의 이 단계에 있는 문서 수를 반환합니다.

$count 축적자와는 다릅니다.

MongoDB deployment의 활성 및/또는 휴면 작업에 대한 정보를 반환합니다. 실행하려면 db.aggregate() 메서드를 사용합니다.
동일한 입력 문서 세트의 단일 단계에서 여러 개의 애그리게이션 파이프라인을 처리합니다. 단일 단계에서 여러 차원 또는 패싯에 걸쳐 데이터를 특성화할 수 있는 다면적 애그리게이션을 생성할 수 있습니다.

지리 공간적 공간 점과의 근접성을 기준으로 정렬된 문서 스트림을 반환합니다. 지리 공간적 공간 데이터에 $match, $sort, $limit 기능을 통합합니다. 출력 문서에는 추가 거리 필드가 포함되며 위치 식별자 필드가 포함될 수 있습니다.

컬렉션에서 재귀 검색을 수행합니다. 각 출력 문서에 해당 문서에 대한 재귀 검색의 순회 결과를 포함하는 새 배열 필드를 추가합니다.
지정된 식별자 표현식으로 입력 문서를 그룹화하고, 지정된 경우 축적자 표현식을 각 그룹에 적용합니다. 모든 입력 문서를 소비하고 각 개별 그룹당 하나의 문서를 출력합니다. 출력 문서에는 식별자 필드와 누적된 필드(지정된 경우)만 포함됩니다.
컬렉션의 각 인덱스 사용에 관한 통계를 반환합니다.
수정되지 않은 처음 n개 문서를 파이프라인에 전달하며, 여기서 n은 지정된 제한입니다. 각 입력 문서에 대해 문서 1개(처음 n개 문서에 대해) 또는 문서 0개(처음 n개 문서 이후)를 출력합니다.
현재 연결된 mongos 또는 mongod 인스턴스에서 최근에 사용 중인 모든 활성 세션을 나열합니다. 이러한 세션이 아직 system.sessions collection으로 전파되지 않았을 수 있습니다.
system.sessions 컬렉션으로 전파될 수 있을 만큼 충분히 오랫동안 활성화된 모든 세션을 나열합니다.
동일한 데이터베이스의 다른 컬렉션에 왼쪽 외부 조인을 수행하여 '조인된(joined)' 컬렉션의 문서를 필터링해 처리합니다.
일치하는 문서만 수정되지 않은 상태로 다음 파이프라인 단계로 전달될 수 있도록 문서 스트림을 필터링합니다. $match는 표준 MongoDB 쿼리를 사용합니다. 각 입력 문서에서 하나의 문서(일치하는 문서) 또는 0개의 문서(일치하지 않는 문서)를 출력합니다.

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

버전 4.2에 추가되었습니다.

aggregation pipeline의 결과 문서를 collection에 씁니다. $out 단계를 사용하려면 파이프라인의 마지막 단계여야 합니다.
collection에 대한 계획 캐시 정보를 반환합니다.
새 필드를 추가하거나 기존 필드를 제거하는 등 스트림의 각 문서 모양을 변경합니다. 각 입력 문서에 대해 하나의 문서를 출력합니다.
문서 자체에 저장된 정보를 기반으로 각 문서의 콘텐츠를 제한해 스트림의 각 문서를 재구성합니다. $project$match의 기능을 통합합니다. 필드 수준 편집을 구현하는 데 사용할 수 있고, 각 입력 문서에서 문서 1개 또는 0개를 출력합니다.
문서를 특정 포함된 문서로 바꿉니다. 이 작업은 _id 필드를 포함하여 입력 문서의 모든 기존 필드를 대체합니다. 입력 문서에 포함된 문서를 지정하여 포함된 문서를 최상위 수준으로 승격합니다.

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

$replaceRoot 의 별칭입니다.

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

Atlas 컬렉션에 있는 필드에 대한 전체 텍스트 검색을 수행합니다.

참고

$search 는 MongoDB Atlas cluster에서만 사용할 수 있으며 자체 managed 배포서버에는 사용할 수 없습니다.

문서에 새 필드를 추가합니다. 입력 문서의 기존 필드와 새로 추가된 필드를 모두 포함하는 문서를 출력합니다.

$addFields 의 별칭입니다.

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

버전 5.0에 추가.

건너뛰기 수가 n으로 지정된 경우 첫 n개의 문서를 건너뛰고 나머지 문서를 수정되지 않은 상태로 파이프라인에 전달합니다. 각 입력 문서에서 문서 0개(첫 n개 문서에서) 또는 문서 1개(첫 n개 문서 이후)를 출력합니다.
지정된 정렬 키를 기준으로 문서 스트림을 재정렬합니다. 주문만 변경되고 문서는 수정되지 않은 상태로 유지되며, 각 입력 문서에서 하나의 문서를 출력합니다.
지정된 표현식의 값을 기준으로 들어오는 문서를 그룹화한 다음 각 고유 그룹의 문서 수를 계산합니다.

두 collection의 union을 수행합니다. 즉, 두 collection의 파이프라인 결과를 단일 결과 세트로 결합합니다.

버전 4.4에 추가되었습니다.

문서에서 필드를 제거/제외합니다.

필드를 제외하거나 제거하는 $project 단계의 별칭입니다.

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

돌아가기

비트

다음

$addFields