Docs Menu
Docs Home
/ / /
Kotlin 코루틴

흐름에서 데이터 액세스

이 페이지의 내용

  • 개요
  • 터미널 메서드
  • 첫 번째 문서 찾기
  • 결과 수 계산
  • 결과를 목록으로 변환
  • 결과 반복
  • 쿼리 설명

이 가이드에서는 MongoDB Kotlin 드라이버와 함께 Flow 를 사용하여 데이터에 액세스하는 방법을 배울 수 있습니다.

Flow 은(는) Kotlin 코루틴에 내장된 데이터 유형으로, 비동기적으로 계산되는 값의 스트림을 나타냅니다. 코틀린 코루틴 드라이버는 흐름을 사용하여 데이터베이스 읽기 작업의 결과를 나타냅니다.

This page uses an initiating method, find() to show how to 액세스 data from a FindFlow.

참고

데이터에 액세스하고 저장하는 다음 방법은 AggregateFlow와 같은 다른 이터러블에도 적용됩니다.

find() 메서드는 FindFlow 인스턴스를 만들고 반환합니다. FindFlow 를 사용하면 Atlas Search 기준과 일치하는 문서를 찾아보고 메서드를 통해 매개변수를 설정하여 표시할 문서를 추가로 지정할 수 있습니다.

터미널 메서드는 작업을 제어하는 Flow 인스턴스의 모든 매개변수를 구성한 후 MongoDB Server에서 작업을 실행합니다.

firstOrNull() 쿼리 결과에서 첫 번째 문서를 조회하려면 메서드를 사용하고,null 결과가 없는 경우 메서드를 사용합니다.

val resultsFlow = collection.find()
val firstResultOrNull = resultsFlow.firstOrNull()

또는 first() 메서드를 사용하여 쿼리에서 첫 번째 문서를 조회하거나 결과가 없는 경우 NoSuchElementException 을 발생시킬 수 있습니다.

try {
val resultsFlow = collection.find()
val firstResult = resultsFlow.first()
} catch (e: NoSuchElementException) {
println("No results found")
}

이러한 메서드는 고유 인덱스로 필터링할 때와 같이 쿼리 필터가 하나의 문서와 일치할 때 자주 사용됩니다.

count() 메서드를 사용하여 쿼리에서 결과 수를 검색합니다.

val resultsFlow = collection.find()
val count = resultsFlow.count()

toList() 메서드를 사용하여 쿼리 결과를 List 에 저장합니다.

val resultsFlow = collection.find()
val results = resultsFlow.toList()

이 메서드는 쿼리 필터가 사용 가능한 메모리에 들어갈 수 있는 적은 수의 문서를 반환할 때 자주 사용됩니다.

collect() 메서드를 사용하여 가져온 문서를 반복하고 조기 종료 시 흐름이 닫히도록 합니다.

val resultsFlow = collection.find()
resultsFlow.collect { println(it) }

explain() 메서드를 사용하여 MongoDB가 작업을 실행하는 방법에 대한 정보를 볼 수 있습니다.

explain() 메서드는 실행 계획 및 성능 통계를 반환합니다. 실행 계획은 MongoDB가 작업을 완료할 수 있는 잠재적인 방법입니다. explain() 메서드는 성공적인 계획(MongoDB가 실행한 계획)과 거부된 계획을 모두 제공합니다.

explain() 메소드에 상세 수준을 전달하여 설명의 세부 정보 수준을 지정할 수 있습니다.

다음 표에는 설명 및 해당 사용 사례에 대한 모든 상세 수준이 나와 있습니다.

상세도 수준
사용 사례

ALL_PLANS_EXECUTIONS

쿼리를 실행하기 위해 MongoDB가 어떤 계획을 선택할지 알고 싶습니다.

EXECUTION_STATS

쿼리가 잘 수행되고 있는지 알고 싶습니다.

QUERY_PLANNER

쿼리에 문제가 있으며 문제를 진단하기 위해 가능한 한 많은 정보를 원합니다.

다음 예제에서는 실행 계획을 생성하는 애그리게이션 단계에 대한 성공적인 계획의 JSON 표현을 출력합니다.

val explanation = collection.find().explain(ExplainVerbosity.EXECUTION_STATS)
val jsonSummary = explanation.getEmbedded(
listOf("queryPlanner", "winningPlan"),
Document::class.java
).toJson()
println(jsonSummary)
{ "stage": "COLLSCAN", "direction": "forward" }

explain 작업에 대한 자세한 내용은 다음 서버 매뉴얼 항목을 참조하세요.

  • 설명 출력

  • 쿼리 계획

이 섹션에 언급된 메서드 및 클래스에 대한 자세한 내용은 다음 API 문서를 참조하세요.

다음

MongoDB 코틀린(Kotlin) 드라이버