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

데이터 클래스에 빌더 사용

이 가이드 에서는 코틀린 (Kotlin) 운전자 에서 사용할 수 있는 빌더 클래스와 함께 데이터 클래스 속성을 직접 사용하는 방법을 학습 수 있습니다.

코틀린 (Kotlin) 운전자 문자열 필드 이름을 사용하는 대신 빌더 메서드를 사용할 때 데이터 클래스 속성을 참조할 수 있는 확장 기능을 구현합니다. 이러한 방식으로 코드를 구조화하여 코드를 보다 유형 안전하게 만들고 애플리케이션의 코틀린 (Kotlin) 상호 운용성을 개선할 수 있습니다.

확장 라이브러리를 사용하면 중위 표기법을 사용하여 쿼리를 구성하고, 문서를 업데이트 , 기타 성명서를 쓰기 (write) 있습니다. 이 표기법에 대해 자세히 학습 코틀린 (Kotlin) 참고 문서에서 접두사 표기법 을 참조하세요.

참고

이 페이지에서는 이 기능을 시연하기 위해 제한된 수의 코드 예제만 제공합니다. 모든 빌더 클래스에 대한 예시를 보려면 빌더 가이드를 참조하세요.

이 기능을 구현 하려면 종속성 목록에 mongodb-driver-kotlin-extensions 종속성을 추가해야 합니다.

BOM

운전자 아티팩트의 버전을 관리 하려면 JVM 운전자 BOM(Bill of Material)을 애플리케이션 에 추가하는 것이 좋습니다. 이렇게 하면 BOM이 적용되는 개별 패키지 의 버전을 지정할 필요가 없으므로 종속성 관리 간소화됩니다. 자세한 학습 은 빠른 시작 가이드 의 드라이버 BOM 추가 단계를 참조하세요.

다음 탭에서 선택하여 GradleMaven 패키지 관리자를 사용하여 프로젝트 에 확장 종속성을 추가하는 방법을 확인합니다.

Gradle 을 사용하는 경우 종속성을 관리 하려면 build.gradle.kts 종속성 목록에 다음을 추가하세요.

build.gradle.kts
implementation("org.mongodb:mongodb-driver-kotlin-extensions")

Maven 을 사용하는 경우 종속성을 관리 하려면 pom.xml 종속성 목록에 다음을 추가하세요.

pom.xml
<dependency>
<groupId>org.mongodb</groupId>
<artifactId>mongodb-driver-kotlin-extensions</artifactId>
</dependency>

확장 종속성을 설치한 후 com.mongodb.kotlin.client.model 경로에서 클래스와 메서드를 가져와서 확장 메서드를 사용할 수 있습니다. 이 가이드 의 애그리게이션 예시 에 표시된 대로 동일한 애플리케이션 에서 이러한 메서드와 표준 빌더 메서드를 혼합하여 사용할 수 있습니다.

이 섹션에는 확장 패키지 의 빌더 클래스 메서드와 함께 데이터 클래스 속성을 직접 사용하는 방법을 보여주는 예제가 포함되어 있습니다.

데이터 클래스 주석

확장 빌더 클래스가 데이터 클래스를 메서드화하는 경우 메서드는 bson-kotlinbson-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 확장 메서드를 사용하여 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 빌더 클래스의 헬퍼를 사용하면 데이터 클래스 속성을 통해 업데이트를 수행할 수 있습니다. 이 클래스에 대해 자세히 학습 업데이트 빌더 가이드 참조하세요.

다음 코드는 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)

AggregatesAccumulators 빌더 클래스의 헬퍼를 사용하여 데이터 클래스 속성을 통해 애그리게이션을 수행할 수 있습니다. 이러한 클래스에 대해 자세히 학습 애그리게이션 빌더 가이드 참조하세요.

다음 코드는 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)

돌아가기

Update

이 페이지의 내용