필드의 고유 값 가져오기
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 문서
점 표기법으로 서버에 수동 입력