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

필드의 고유 값 가져오기

MongoCollection 객체에서 distinct() 메서드를 호출하여 collection 전체에서 필드의 고유 값 목록을 검색할 수 있습니다. 문서 필드 이름을 첫 번째 매개변수로 전달하고 결과를 캐스팅할 클래스를 유형 매개변수로 전달합니다.

다음 스니펫은 sample_mflix 샘플 데이터베이스의 movies 컬렉션을 사용하는 distinct() 메서드를 보여줍니다. 문서는 다음 Kotlin 데이터 클래스로 모델링됩니다.

data class Movie(
val type: String,
val languages: List<String>,
val countries: List<String>,
val awards: Awards){
data class Awards(val wins: Int)
}

다음 메서드 호출은 movies collection에 있는 countries 필드의 각 고유 값을 반환합니다.

collection.distinct<String>(Movie::countries.name)

점 표기법을 사용하여 문서에 있는 필드 또는 내장된 문서 내에 있는 필드를 지정할 수 있습니다. 다음 메서드 호출은 awards 내장된 문서에 있는 wins 필드의 각 고유 값을 반환합니다.

collection.distinct<Int>("${Movie::awards.name}.${Movie.Awards::wins.name}")

다음과 같이 쿼리 필터를 두 번째 매개변수로 사용하여 MongoDB 인스턴스가 고유 값을 조회하는 문서 세트를 제한할 수도 있습니다.

collection.distinct<String>(Movie::type.name, Filters.eq(Movie::languages.name, "French"))

distinct() 메서드는 결과를 액세스, 구성 및 탐색하는 메서드가 포함된 DistinctFlow 클래스를 구현하는 객체를 반환합니다. DistinctFlow 는 Kotlin 코루틴 라이브러리의 Flow 인터페이스로 위임되어 first()firstOrNull() 와 같은 메서드에 대한 액세스를 허용합니다.

자세한 내용은 흐름에서 데이터 액세스 가이드대한 가이드를 참조하세요.

다음 예제에서는 year movies collection에서 문서 필드에 대한 고유 값 목록을 조회합니다. 쿼리 필터를 사용하여 directors 배열의 값에 'Carl Franklin'이 포함된 영화를 일치시킵니다.

예제를 실행하면 칼 프랭클린이 감독으로 포함된 모든 영화에 대해 각 연도를 보고하는 출력이 표시됩니다.

참고

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

import com.mongodb.MongoException
import com.mongodb.client.model.Filters
import com.mongodb.kotlin.client.coroutine.MongoClient
import kotlinx.coroutines.runBlocking
data class Movie(val year: Int, val directors: List<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")
try {
val resultsFlow = collection.distinct<Int>(
Movie::year.name, Filters.eq(Movie::directors.name, "Carl Franklin")
)
resultsFlow.collect { println(it) }
} catch (e: MongoException) {
System.err.println("An error occurred: $e")
}
mongoClient.close()
}
1992
1995
1998
...

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

  • distinct() API 설명서

  • distinctFlow API 문서

  • 점 표기법으로 서버에 수동 입력

돌아가기

문서 수 계산