Retrieve Data
개요
이 가이드 에서는 코틀린 (Kotlin) 운전자 사용하여 MongoDB database 에서 데이터를 조회 방법을 학습 수 있습니다.읽기 작업을 수행하여 MongoDB 에서 데이터를 조회 수 있습니다.
읽기 작업을 통해 다음 작업을 수행 활성화 .
찾기 작업을 사용하여 컬렉션에서 문서의 하위 집합을 검색합니다.
애그리게이션 작업을 사용하여 컬렉션에서 검색된 문서에서 변환 수행
변경 스트림을 사용하여 데이터베이스 의 실시간 변경 사항 모니터링
예시용 샘플 데이터
다음 섹션에는 페인트 캔에 대한 고객 주문을 관리 방법을 보여주는 예가 포함되어 있습니다. 각 주문에 대해 orders
컬렉션 문서의 color
및 qty
필드에 해당하는 색상 및 수량을 추적 합니다.
{ "_id": 1, "color": "purple", "qty": 10 } { "_id": 2, "color": "green", "qty": 8 } { "_id": 3, "color": "purple", "qty": 4 } { "_id": 4, "color": "green", "qty": 11 }
이 데이터는 다음 코틀린 (Kotlin) 데이터 클래스에 의해 모델링됩니다.
data class PaintOrder( val id: Int, val qty: Int, val color: String )
찾기 작업
찾기 작업을 사용하여 MongoDB에서 기존 데이터의 하위 집합을 검색할 수 있습니다. 검색할 문서, 검색 순서, 검색할 문서 수 등 반환할 데이터를 지정할 수 있습니다.
찾기 작업을 수행하려면 의 find()
인스턴스 MongoCollection
에서 메서드를 호출합니다. 이 메서드는 사용자가 제공한 쿼리 필터하다 와 일치하는 문서를 컬렉션 에서 검색합니다. 쿼리 지정하는 방법에 대한 자세한 내용은 쿼리 지정 가이드 참조하세요.
예시
어떤 주문에 3
개보다 많고 9
개 미만인 페인트 캔이 포함되어 있는지 알고 싶습니다.
다음 코드를 실행하여 기준과 일치하는 주문을 찾습니다.
val filter = Filters.and(Filters.gt("qty", 3), Filters.lt("qty", 9)) val resultsFlow = collection.find(filter) resultsFlow.collect { println(it) }
PaintOrder(id=2, qty=8, color=green) PaintOrder(id=3, qty=4, color=purple)
Filters
빌더에 대해 자세히 학습 필터 빌더 가이드 참조하세요.
실행 가능한 find()
예시 보려면 여러 문서 찾기 사용 예시 참조하세요.
애그리게이션 작업
집계 작업을 사용하여 데이터에서 집계 파이프라인 실행 . 집계 파이프라인 집계된 결과를 생성하는 다단계 변환입니다.
집계 작업을 수행하려면 MongoCollection
인스턴스에서 aggregate()
메서드를 호출합니다. 이 메서드는 순서대로 실행 집계 표현식을 허용합니다. 애그리게이션을 수행하기 위해 문서를 일치시키고, 필드의 이름을 바꾸고, 값을 그룹 하는 방법을 지정하는 집계 단계를 정의할 수 있습니다. 자세한 학습은 애그리게이션 가이드 참조하세요.
예시
가장 많이 구매되는 색상을 찾아 어떤 페인트 색상이 가장 인기 있는지 알고 싶습니다.
다음 작업을 수행하는 집계 파이프라인 생성할 수 있습니다.
orders
컬렉션의 모든 문서와 일치색상별로 주문 그룹화
색상별로 수량 필드 합산
결과 순서를 가장 높은 수량에서 가장 낮은 수량 순으로 지정
data class AggregationResult( val id: String, val qty: Int) val filter = Filters.empty() val pipeline = listOf( Aggregates.match(filter), Aggregates.group( "\$color", Accumulators.sum("qty", "\$qty") ), Aggregates.sort(Sorts.descending("qty")) ) val resultsFlow = collection.aggregate<AggregationResult>(pipeline) resultsFlow.collect { println(it) }
PaintOrder(id=2, qty=19, color=green) PaintOrder(id=3, qty=14, color=purple)
집계 파이프라인 구성에 대해 자세히 학습 서버 매뉴얼의 애그리게이션을 참조하세요.
이 페이지에 언급된 메서드에 대해 자세히 학습 다음 API 설명서를 참조하세요.