개요
이 가이드 에서는 코틀린 (Kotlin) 운전자 에서 사용할 수 있는 빌더 클래스와 함께 데이터 클래스 속성을 직접 사용하는 방법을 학습 수 있습니다.
코틀린 (Kotlin) 운전자 문자열 필드 이름을 사용하는 대신 빌더 메서드를 사용할 때 데이터 클래스 속성을 참조할 수 있는 확장 기능을 구현합니다. 이러한 방식으로 코드를 구조화하여 코드를 보다 유형 안전하게 만들고 애플리케이션의 코틀린 (Kotlin) 상호 운용성을 개선할 수 있습니다.
확장 라이브러리를 사용하면 중위 표기법을 사용하여 쿼리를 구성하고, 문서를 업데이트 , 기타 성명서를 쓰기 (write) 있습니다. 이 표기법에 대해 자세히 학습 코틀린 (Kotlin) 참고 문서에서 접두사 표기법 을 참조하세요.
참고
이 페이지에서는 이 기능을 시연하기 위해 제한된 수의 코드 예제만 제공합니다. 모든 빌더 클래스에 대한 예시를 보려면 빌더 가이드를 참조하세요.
프로젝트에 코틀린 (Kotlin) 확장 프로그램 추가하기
이 기능을 구현 하려면 종속성 목록에 mongodb-driver-kotlin-extensions
종속성을 추가해야 합니다.
팁
BOM
다음 탭에서 선택하여 Gradle 및 Maven 패키지 관리자를 사용하여 프로젝트 에 확장 종속성을 추가하는 방법을 확인합니다.
Gradle 을 사용하는 경우 종속성을 관리 하려면 build.gradle.kts
종속성 목록에 다음을 추가하세요.
implementation("org.mongodb:mongodb-driver-kotlin-extensions")
Maven 을 사용하는 경우 종속성을 관리 하려면 pom.xml
종속성 목록에 다음을 추가하세요.
<dependency> <groupId>org.mongodb</groupId> <artifactId>mongodb-driver-kotlin-extensions</artifactId> </dependency>
확장 종속성을 설치한 후 com.mongodb.kotlin.client.model
경로에서 클래스와 메서드를 가져와서 확장 메서드를 사용할 수 있습니다. 이 가이드 의 애그리게이션 예시 에 표시된 대로 동일한 애플리케이션 에서 이러한 메서드와 표준 빌더 메서드를 혼합하여 사용할 수 있습니다.
빌더 예시
이 섹션에는 확장 패키지 의 빌더 클래스 메서드와 함께 데이터 클래스 속성을 직접 사용하는 방법을 보여주는 예제가 포함되어 있습니다.
팁
데이터 클래스 주석
확장 빌더 클래스가 데이터 클래스를 메서드화하는 경우 메서드는 bson-kotlin
및 bson-kotlinx
패키지의 데이터 클래스 주석을 따릅니다. 주석에 대해 자세히 학습 문서 데이터 형식:데이터 클래스 가이드의 주석을 사용하여 구성 요소 변환 지정 가이드 과 코틀린 (Kotlin) 직렬화 가이드 의 데이터 클래스에 주석 달기 섹션을 참조하세요.
샘플 데이터
이 섹션의 예제에서는 학교의 학생을 설명하는 students
컬렉션 의 문서를 사용합니다. students
컬렉션 의 문서는 다음 코틀린 (Kotlin) 데이터 클래스에 의해 모델링됩니다.
data class Student( val name: String, val teachers: List<String>, val gradeAverage: Double )
필터
Filters
빌더 클래스의 헬퍼를 사용하여 데이터 클래스 속성을 쿼리 할 수 있습니다. 이 클래스에 대해 자세히 학습 필터 빌더 가이드 참조하세요.
다음 코드는 Filters
확장 메서드를 사용하여 Student
데이터 클래스에 대한 쿼리를 수행하는 다양한 방법을 보여줍니다.
import com.mongodb.kotlin.client.model.Filters.eq import com.mongodb.kotlin.client.model.Filters.all
val student = Student( "Sandra Nook", listOf("Alvarez", "Gruber"), 85.7 ) // Equivalent equality queries Student::name.eq(student.name) eq(Student::name, student.name) Student::name eq student.name // Infix notation // Equivalent array queries all(Student::teachers, student.teachers) Student::teachers.all(student.teachers) Student::teachers all student.teachers // Infix notation
Indexes
Indexes
빌더 클래스의 헬퍼를 사용하여 데이터 클래스 속성에 대한 인덱스를 만들 수 있습니다. 이 클래스에 대해 자세히 학습 인덱스 빌더 가이드 참조하세요.
다음 코드는 Indexes
확장 메서드를 사용하여 Student
데이터 클래스에 인덱스를 생성하는 다양한 방법을 보여줍니다.
import com.mongodb.kotlin.client.model.Indexes.ascending import com.mongodb.kotlin.client.model.Indexes.descending
val ascendingIdx = Indexes.ascending(Student::name) val descendingIdx = Indexes.descending(Student::teachers) val ascIdxName = collection.createIndex(ascendingIdx) val descIdxName = collection.createIndex(descendingIdx)
프로젝션
Projections
빌더 클래스의 헬퍼를 사용하여 데이터 클래스 속성에 대한 프로젝션을 만들 수 있습니다. 이 클래스에 대해 자세히 학습 프로젝션 빌더 가이드 참조하세요.
다음 코드는 Projections
확장 메서드를 사용하여 Student
데이터 클래스에 프로젝션 생성하는 방법을 보여줍니다.
import com.mongodb.kotlin.client.model.Projections.excludeId import com.mongodb.kotlin.client.model.Projections.fields import com.mongodb.kotlin.client.model.Projections.include
val combinedProj = fields( include(Student::name, Student::gradeAverage), excludeId() ) collection.find().projection(combinedProj)
정렬
Sorts
빌더 클래스의 헬퍼를 사용하여 데이터 클래스 속성을 기준으로 정렬할 수 있습니다. 이 클래스에 대해 자세히 학습 정렬 빌더 가이드 참조하세요.
다음 코드는 Sorts
확장 메서드를 사용하여 Student
데이터 클래스에 대해 다양한 정렬을 생성하는 방법을 보여줍니다.
import com.mongodb.client.model.Sorts.orderBy import com.mongodb.kotlin.client.model.Sorts
val sort = orderBy( Sorts.descending(Student::gradeAverage), Sorts.ascending(Student::name) ) collection.find().sort(sort)
Updates
Updates
빌더 클래스의 헬퍼를 사용하면 데이터 클래스 속성을 통해 업데이트를 수행할 수 있습니다. 이 클래스에 대해 자세히 학습 업데이트 빌더 가이드 참조하세요.
다음 코드는 Sorts
확장 메서드를 사용하여 Student
데이터 클래스에 대해 다양한 정렬을 생성하는 방법을 보여줍니다.
import com.mongodb.kotlin.client.model.Filters.gte import com.mongodb.kotlin.client.model.Updates.addToSet import com.mongodb.kotlin.client.model.Updates.combine import com.mongodb.kotlin.client.model.Updates.max
val filter = Student::gradeAverage gte 85.0 val update = combine( addToSet(Student::teachers, "Soto"), Student::gradeAverage.max(90.0) ) collection.updateMany(filter, update)
집계
Aggregates
및 Accumulators
빌더 클래스의 헬퍼를 사용하여 데이터 클래스 속성을 통해 애그리게이션을 수행할 수 있습니다. 이러한 클래스에 대해 자세히 학습 애그리게이션 빌더 가이드 참조하세요.
다음 코드는 Accumulators
확장 메서드와 Aggregates
헬퍼 메서드를 사용하여 Student
데이터 클래스에서 집계 수행하는 방법을 보여줍니다.
import com.mongodb.client.model.Aggregates.group import com.mongodb.client.model.Aggregates.limit import com.mongodb.client.model.Aggregates.sort import com.mongodb.kotlin.client.model.Accumulators.avg
// Data class to store aggregation result data class Summary ( val average: Double ) val pipeline = listOf( // Sorts grades from high to low sort(Sorts.descending(Student::gradeAverage)), // Selects the top 3 students limit(3), // Calculates the average of their grades and stores value in a Summary instance group(null, avg(Summary::average, "\$${Student::gradeAverage.name}")) ) val result = collection.aggregate<Summary>(pipeline)