개요
이 가이드 에서는 데이터 클래스 속성을 코틀린 동기 (Kotlin Sync) 운전자 에서 사용할 수 있는 빌더 클래스와 함께 직접 사용하는 방법을 학습 수 있습니다.
코틀린 동기 (Kotlin Sync) 운전자 문자열 필드 이름을 사용하는 대신 빌더 메서드를 사용할 때 데이터 클래스 속성을 참조할 수 있는 확장을 구현합니다. 이러한 방식으로 코드를 구조화하여 코드를 보다 유형 안전하게 만들고 애플리케이션의 코틀린 (Kotlin) 상호 운용성을 개선할 수 있습니다.
확장 라이브러리를 사용하면 중위 표기법을 사용하여 쿼리를 구성하고, 문서를 업데이트 , 기타 성명서를 쓰기 (write) 있습니다. 이 표기법에 대해 자세히 학습 코틀린 (Kotlin) 참고 문서에서 접두사 표기법 을 참조하세요.
참고
이 페이지에서는 이 기능을 시연하기 위해 제한된 수의 코드 예제만 제공합니다. 빌더 클래스 사용에 대해 자세히 학습 빌더 코드 패턴 사용 가이드 참조하세요.
프로젝트에 코틀린 (Kotlin) 확장 프로그램 추가하기
이 기능을 구현 하려면 종속성 목록에 mongodb-driver-kotlin-extensions
종속성을 추가해야 합니다.
다음 탭에서 선택하여 Gradle 및 Maven 패키지 관리자를 사용하여 프로젝트 에 확장 종속성을 추가하는 방법을 확인합니다.
Gradle 을 사용하는 경우 종속성을 관리 하려면 build.gradle.kts
종속성 목록에 다음을 추가하세요.
implementation("org.mongodb:mongodb-driver-kotlin-extensions:5.3.0")
Maven 을 사용하는 경우 종속성을 관리 하려면 pom.xml
종속성 목록에 다음을 추가하세요.
<dependency> <groupId>org.mongodb</groupId> <artifactId>mongodb-driver-kotlin-extensions</artifactId> <version>5.3.0</version> </dependency>
확장 종속성을 설치한 후 com.mongodb.kotlin.client.model
경로에서 클래스와 메서드를 가져와서 확장 메서드를 사용할 수 있습니다. 이 가이드 의 애그리게이션 예시 에 표시된 대로 동일한 애플리케이션 에서 이러한 메서드와 표준 빌더 메서드를 혼합하여 사용할 수 있습니다.
빌더 예시
이 섹션에는 확장 패키지 의 빌더 클래스 메서드와 함께 데이터 클래스 속성을 직접 사용하는 방법을 보여주는 예제가 포함되어 있습니다.
팁
데이터 클래스 주석
확장 빌더 클래스가 데이터 클래스를 메서드화하는 경우 메서드는 bson-kotlin
및 bson-kotlinx
패키지의 데이터 클래스 주석을 따릅니다. 주석에 대해 자세히 학습 문서 데이터 형식: 데이터 클래스 가이드 의 주석을 사용하여 구성 요소 변환 지정 섹션을 참조하세요.
샘플 데이터
이 섹션의 예제에서는 학교의 학생을 설명하는 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)