Join us Sept 17 at .local NYC! Use code WEB50 to save 50% on tickets. Learn more >
MongoDB Event
Docs Menu
Docs Home
/ / /
Kotlin Sync 드라이버
/

데이터 클래스에 빌더 사용

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

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

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

참고

이 페이지에서는 이 기능을 시연하기 위해 제한된 수의 코드 예제만 제공합니다. 빌더 클래스 사용에 대해 자세히 학습 빌더 코드 패턴 사용 가이드 참조하세요.

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

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

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

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

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

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-kotlinbson-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 확장 메서드를 사용하여 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)

돌아가기

빌더

이 페이지의 내용