애그리게이션을 통한 데이터 변환
개요
이 가이드에서는 Kotlin 동기화 드라이버를 사용하여 애그리게이션 작업 을 수행하는 방법에 대해 설명합니다.
애그리게이션 작업을 사용하여 MongoDB 컬렉션의 데이터를 처리하고 계산된 결과를 반환할 수 있습니다. Query API의 일부인 MongoDB 애그리게이션 프레임워크는 데이터 처리 파이프라인 개념을 모델로 합니다. 문서는 하나 이상의 단계를 포함하는 파이프라인에 들어가고, 각 단계는 문서를 변환하여 최종 애그리게이션 결과를 출력합니다.
애그리게이션 작업은 자동차 공장과 유사하게 생각할 수 있습니다. 자동차 공장에는 조립 라인이 있으며, 여기에는 드릴 및 용접기와 같은 특정 작업을 수행할 수 있는 특수 도구를 갖춘 조립 스테이션이 있습니다. 원부품이 공장에 들어오면 조립 라인에서 이를 변형하고 조립하여 완제품으로 만듭니다.
애그리게이션 파이프라인은 조립 라인이고, 애그리게이션 단계는 조립 스테이션이며, 작업 연산자는 특수 도구입니다.
집계 및 찾기 연산 비교
찾기 조치를 사용하여 다음 조치을 수행할 수 있습니다:
반환할 문서 선택
반환할 필드 선택
결과 정렬
애그리게이션 조치를 사용하여 다음 조치를 수행할 수 있습니다:
찾기 작업 수행
필드 이름 바꾸기
필드 계산
데이터 요약
그룹 값
제한 사항
애그리게이션 작업을 사용할 때는 다음과 같은 제한 사항이 적용됩니다.
반환된 문서는 BSON 문서 크기 제한인 16메가바이트를 초과하지 않아야 합니다.
파이프라인 단계의 메모리 제한은 기본적으로 100 메가바이트입니다.
AggregateIterable
클래스의allowDiskUse()
메서드를 사용하여 이 제한을 초과할 수 있습니다.
애그리게이션 예시
이 섹션의 예제에서는 Atlas 샘플 데이터 세트 의 sample_restaurants
데이터베이스에 있는 restaurants
컬렉션을 사용합니다. 무료 MongoDB Atlas 클러스터를 생성하고 샘플 데이터 세트를 로드하는 방법을 알아보려면 Atlas 시작하기 가이드를 참조하세요.
다음 Kotlin 데이터 클래스는 이 컬렉션의 문서를 모델링합니다.
data class Restaurant( val name: String, val cuisine: String, val borough: String )
집계 파이프라인 빌드 및 실행
컬렉션의 문서에 대해 애그리게이션을 수행하려면 aggregate()
메서드에 애그리게이션 단계 목록을 전달합니다.
이 예제에서는 뉴욕시 각 자치구에 있는 베이커리 수의 개수를 출력합니다. 다음 코드는 다음 단계를 포함하는 집계 파이프라인을 생성합니다.
cuisine
필드의 값이"Bakery"
인 문서를 필터링하는 $match 단계입니다.일치하는 문서를
borough
필드별로 그룹화하여 해당 필드의 각 고유 값에 대한 문서 수를 생성하는 $group 단계입니다.
val pipeline = listOf( Aggregates.match(Filters.eq(Restaurant::cuisine.name, "Bakery")), Aggregates.group("\$borough", Accumulators.sum("count", 1)) ) val results = collection.aggregate<Document>(pipeline) results.forEach { result -> println(result) }
팁
$group
애그리게이션 단계에 대한 그룹 키를 지정할 때는 \
문자를 사용하여 $
문자를 이스케이프 처리해야 합니다.
애그리게이션 설명
MongoDB가 작업을 실행하는 방법에 대한 정보를 보려면 파이프라인에 $explain
애그리게이션 단계를 포함하면 됩니다. MongoDB는 작업을 설명할 때 실행 계획 과 성능 통계를 반환합니다. 실행 계획은 MongoDB가 작업을 완료할 수 있는 잠재적인 방법입니다. MongoDB에 작업을 설명하도록 지시하면 MongoDB가 작업에 대해 선택한 계획과 거부된 실행 계획을 모두 반환합니다.
다음 코드 예시에서는 이전 섹션에 표시된 것과 동일한 애그리게이션을 실행하고 $explain
단계를 추가하여 작업 세부 정보를 출력합니다.
print(collection.aggregate(pipeline).explain())
추가 정보
표현식 연산자의 전체 목록을 보려면 MongoDB Server 매뉴얼에서 애그리게이션 연산자 를 참조하세요.
집계 파이프라인을 어셈블하는 방법에 대해 알아보고 예시를 보려면 MongoDB Server 매뉴얼에서 집계 파이프라인 을 참조하세요.
파이프라인 단계 생성에 대해 자세히 알아보려면 MongoDB Server 매뉴얼의 애그리게이션 단계 를 참조하세요.
MongoDB 작업에 대해 자세히 알아보려면 MongoDB Server 매뉴얼의 출력 및 쿼리 계획 설명을 참조하세요.
API 문서
코틀린(Kotlin) 동기화 드라이버로 애그리게이션 작업을 실행하는 방법에 대한 자세한 내용은 다음 API 문서를 참조하세요.