Docs Menu
Docs Home
/ / /
Kotlin 코루틴
/ / /

Retrieve Data

이 가이드 에서는 코틀린 (Kotlin) 운전자 사용하여 MongoDB database 에서 데이터를 조회 방법을 학습 수 있습니다.읽기 작업을 수행하여 MongoDB 에서 데이터를 조회 수 있습니다.

읽기 작업을 통해 다음 작업을 수행 활성화 .

  • 찾기 작업을 사용하여 컬렉션에서 문서의 하위 집합을 검색합니다.

  • 애그리게이션 작업을 사용하여 컬렉션에서 검색된 문서에서 변환 수행

  • 변경 스트림을 사용하여 데이터베이스 의 실시간 변경 사항 모니터링

다음 섹션에는 페인트 캔에 대한 고객 주문을 관리 방법을 보여주는 예가 포함되어 있습니다. 각 주문에 대해 orders 컬렉션 문서의 colorqty 필드에 해당하는 색상 및 수량을 추적 합니다.

{ "_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(
@BsonId 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(@BsonId 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 설명서를 참조하세요.

돌아가기

읽기

이 페이지의 내용