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

문서 찾기

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

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

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

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

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

FindFlow 또한 first()firstOrNull() 와 같은 Kotlin 코루틴 라이브러리의 위임 인터페이스 Flow 에서 메서드를 가져옵니다. firstOrNull() 메서드는 조회된 결과에서 첫 번째 문서를 반환하거나 결과가 없는 경우 null 을 반환합니다. first() 메서드는 첫 번째 문서를 반환하거나 쿼리와 일치하는 문서가 없는 경우 NoSuchElementException 예외를 발생시킵니다.

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

다음 스니펫은 movies 컬렉션에서 단일 문서를 찾습니다. 다음 객체와 메서드를 사용합니다:

  • find() 메서드에 전달되는 쿼리 필터입니다 . eq 필터는 제목이 "The Room" 텍스트와 정확히 일치하는 영화만 일치합니다.

  • 일치하는 문서를 등급별 내림차순으로 정리하는 정렬입니다. 쿼리가 여러 문서와 일치하는 경우 반환되는 문서는 등급이 가장 높은 문서입니다.

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

참고

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

import com.mongodb.client.model.Filters.eq
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.flow.firstOrNull
import kotlinx.coroutines.runBlocking
import usageExamples.find.Results
data class Movie(val title: String, val runtime: Int, val imdb: IMDB) {
data class IMDB(val rating: Double)
}
data class Results(val title: String, val imdb: Movie.IMDB)
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(eq(Movie::title.name, "The Room"))
.projection(projectionFields)
.sort(Sorts.descending("${Movie::imdb.name}.${Movie.IMDB::rating.name}"))
.firstOrNull()
if (resultsFlow == null) {
println("No results found.");
} else {
println(resultsFlow)
}
mongoClient.close()
}

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

  • FindFlow

  • find()

돌아가기

찾기