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

여러 문서 찾기

MongoCollection 객체에서 find() 메서드를 호출하여 컬렉션에 있는 여러 문서를 쿼리할 수 있습니다. 컬렉션의 필터와 일치하는 문서를 쿼리하고 반환하려면 쿼리 필터를 find() 메서드에 전달합니다. 필터를 포함하지 않으면 MongoDB는 컬렉션의 모든 문서를 반환합니다.

코틀린 (Kotlin) 운전자 로 MongoDB 를 쿼리하는 방법에 대한 자세한 내용은 문서 쿼리에 대한 가이드 를 참조하세요.

일치하는 문서를 지정된 순서대로 정리하는 sort(), 반환된 문서에 포함할 필드를 구성하는 projection() 등의 메서드를 find() 메서드에 연결할 수도 있습니다.

sort() 메서드에 대한 자세한 내용은 정렬에 대한 가이드를 참조하세요. projection() 메서드에 대한 자세한 내용은 투영에 대한 가이드를 참조하세요.

find() 메서드는 결과에 액세스, 구성 및 탐색할 수 있는 여러 매서드를 제공하는 클래스인 FindFlow의 인스턴스를 반환합니다.

FindFlow 또한 Kotlin 코루틴 라이브러리의 위임 인터페이스 Flow 에서 메서드를 가져옵니다. collect() 메서드를 호출하여 가져온 결과를 반복할 수 있습니다. 또한 터미널 메서드(예: firstOrNull() )를 호출하여 첫 번째 문서를 반환하거나, 결과가 없는 경우 null 을)를 호출하거나, first() 을(를) 호출하여 collection의 첫 번째 문서를 반환할 수 있습니다. 쿼리와 일치하는 문서가 없는 경우 first() 을(를) 호출하면 NoSuchElementException 예외가 발생합니다.

Kotlin 드라이버를 사용하여 플로우에서 데이터에 액세스하는 방법에 대한 자세한 내용은 플로우에서 데이터 액세스 가이드를 참조하세요.

다음 스니펫은 movies 컬렉션의 쿼리와 일치하는 모든 문서를 찾아서 출력합니다. 다음 객체와 메서드를 사용합니다:

  • find() 메서드에 전달되는 쿼리 필터입니다. lt() 필터는 런타임이 15분 미만인 영화만 일치합니다.

  • 반환된 문서를 제목별로 내림차순으로 정리하는 정렬('Z'가 'A' 앞에 위치).

  • 헬퍼 메서드 excludeId()를 사용하여 titleimdb 필드의 객체를 포함하고 _id 필드를 제외하는 프로젝션.

참고

이 예는 연결 URI를 사용하여 MongoDB 인스턴스에 연결합니다. MongoDB 인스턴스 연결에 대해 자세히 알아보려면 연결 가이드를 참조하세요.

import com.mongodb.client.model.Filters.lt
import com.mongodb.client.model.Projections
import com.mongodb.client.model.Sorts
import com.mongodb.kotlin.client.coroutine.MongoClient
import kotlinx.coroutines.runBlocking
data class Movie(val title: String, val runtime: Int, val imdb: IMDB){
data class IMDB(val rating: Double)
}
data class Results(val title: String)
fun main() = runBlocking {
// Replace the uri string with your MongoDB deployment's connection string
val uri = "<connection string uri>"
val mongoClient = MongoClient.create(uri)
val database = mongoClient.getDatabase("sample_mflix")
val collection = database.getCollection<Movie>("movies")
val projectionFields= Projections.fields(
Projections.include(Movie::title.name, Movie::imdb.name),
Projections.excludeId()
)
val resultsFlow = collection.withDocumentClass<Results>()
.find(lt(Movie::runtime.name, 15))
.projection(projectionFields)
.sort(Sorts.descending(Movie::title.name))
resultsFlow.collect { println(it) }
mongoClient.close()
}

이 페이지에 언급된 클래스 및 메서드에 대한 추가 정보는 다음 API 설명서를 참조하세요.

  • FindFlow

  • find()

돌아가기

문서 찾기