집계 작업은 여러 문서를 처리하고 계산된 결과를 반환합니다. 집계 작업을 통해 다음과 같은 작업을 수행할 수 있습니다:
여러 문서에서 값을 그룹화합니다.
그룹화된 데이터에서 단일 결과를 계산합니다.
시간에 따른 데이터 변화를 분석합니다.
최신 버전의 데이터를 쿼리합니다.
MongoDB의 집계 연산자를 사용하면 데이터를 다른 플랫폼으로 이동하지 않고도 클러스터에서 분석을 실행할 수 있습니다.
시작하기
집계 작업을 수행하기 위해 다음을 사용할 수 있습니다:
집계 파이프라인, 선호되는 방법.
집계 파이프라인보다 기능이 적은 단일 목적 집계 방법.
MongoDB Atlas에서 호스팅되는 배포에 대해 UI에서 집계 파이프라인을 실행할 수 있습니다.
집계 파이프라인
집계 파이프라인은 문서를 처리하는 하나 이상의 단계로 구성됩니다.
각 단계는 입력 문서에 대한 연산을 수행합니다. 예를 들어, 한 단계에서는 문서를 필터링하고, 문서를 그룹화하고, 값을 계산할 수 있습니다.
한 단계에서 출력된 문서는 다음 단계로 전달됩니다.
집계 파이프라인은 문서 그룹에 대한 결과를 반환할 수 있습니다. 예를 들어 총값, 평균값, 최대값, 최소값을 반환할 수 있습니다.
집계 파이프라인을 사용하여 업데이트에 표시된 단계를 사용하는 경우 집계 파이프라인으로 문서를 업데이트할 수 있습니다.
집계 파이프라인 예시
이 페이지의 예시에서는 sample_mflix 샘플 데이터 세트의 데이터를 사용합니다. 이 데이터 세트를 자체 관리형 MongoDB 배포서버에 로드하는 방법에 대한 자세한 내용은 샘플 데이터 세트 로드를 참조하세요. 샘플 데이터베이스를 수정한 경우 이 페이지의 예시를 실행 하려면 데이터베이스를 제거하고 다시 만들어야 할 수 있습니다.
다음 파이프라인은 데이터베이스에서 가장 많은 영화를 지시한 상위 3인의 디렉터를 찾습니다.
$match 단계를 사용하여 디렉터가 등재한 영화를 필터링합니다(디렉터 필드가 null이거나 비어 있는 문서 제외):
{ $match : { "directors" : { $exists: true, $ne: null, $not: {$size: 0} } } },
$match 단계는 디렉터 정보가 없는 영화를 필터링하여 파이프라인의 문서 수를 줄이는 역할을 합니다. 다음으로 $unwind 를 사용하여 디렉터 배열을 분해하여 개별 디렉터당 영화 수를 세어봅니다.
{ $unwind : "$directors" },
$group 를 사용하여 문서를 디렉터 이름별로 그룹하고 각 디렉터의 영화 수를 계산합니다.
{ $group : { _id : "$directors", movieCount : { $sum: 1 } } },
$sort 를 사용하여 나머지 문서를 영화 수에 따라 내림차순으로 정렬합니다.
{ $sort : { movieCount : -1 } },
$limit 를 사용하여 상위 3인의 디렉터를 반환합니다.
{ $limit : 3 }
전체 파이프라인:
db.movies.aggregate( [ { $match : { "directors" : { $exists: true, $ne: null, $not: {$size: 0} } } }, { $unwind : "$directors" }, { $group : { _id : "$directors", movieCount : { $sum: 1 } } }, { $sort : { movieCount : -1 } }, { $limit : 3 } ] )
파이프라인은 다음 결과를 반환합니다.
[ { _id: 'Woody Allen', movieCount: 40 }, { _id: 'Martin Scorsese', movieCount: 32 }, { _id: 'Takashi Miike', movieCount: 31 } ]
샘플 입력 문서가 포함된 실행 가능한 예시는 전체 집계 파이프라인 예시를 참조하세요.
집계 파이프라인대한 자세한 내용은 집계 파이프라인을 참조하세요.
단일 목적 집계 방식
단일 목적 집계 메서드는 단일 컬렉션에서 문서를 집계합니다. 이 메서드는 집계 파이프라인보다 기능이 적습니다.
메서드 | 설명 |
|---|---|
Collection 또는 보기에 있는 문서의 대략적인 개수를 반환합니다. | |
Collection 또는 보기에 있는 문서 수의 개수를 반환합니다. | |
지정된 필드에 고유한 값을 가진 문서의 배열을 반환합니다. |