개요
이 섹션에는 사용 가능한 각 빌더를 사용하는 방법에 대한 가이드가 포함되어 있으며 MongoDB Kotlin 드라이버 빌더 클래스가 제공하는 유틸리티를 보여줍니다.
코틀린(Kotlin) 드라이버는 개발자가 CRUD 작업과 애그리게이션 API를 사용할 수 있도록 프로세스를 간소화하는 클래스를 제공합니다. 정적 유틸리티 메서드를 사용하면 쿼리를 보다 효율적으로 작성할 수 있습니다.
빌더를 사용하는 이유는 무엇입니까?
빌더 클래스를 사용하면 다음과 같은 기능을 활용할 수 있습니다.
개발 중 오류를 찾기 위한 코틀린(Kotlin) 컴파일러와 IDE
검색 및 코드 완성을 위한 IDE
빌더를 사용하면 코틀린(Kotlin) 컴파일러와 IDE가 철자가 잘못된 연산자 등의 오류를 조기에 포착합니다. MongoDB shell 또는 일반 Kotlin 을 사용하는 경우 연산자를 문자열로 작성하고 문제에 대한 시각적 표시를 얻을 수 없으므로 이러한 오류가 컴파일 시간이 아닌 런타임으로 미루어집니다.
빌더 클래스를 사용하면 연산자를 메서드로 작성할 수 있습니다. IDE는 즉시 밑줄을 긋고 오른쪽에 뭔가 잘못되었음을 나타내는 빨간색 막대를 표시합니다. 개발하는 동안 IDE는 사용할 수 있는 메서드를 또한 보여 줍니다. 사용하려는 메서드를 선택하면 자리 표시자 매개 변수로 코드가 자동으로 완성됩니다.
Scenario
다음 기준을 사용하여 users
collection의 모든 사용자에게 마케팅 이메일을 보내려고 한다고 가정해 보겠습니다.
female
성별로 식별하는 사용자다음보다 오래된 사용자
29
사용자의 이메일 주소만 필요하므로 대역폭 비용은 지불하지만 필요하지 않은 데이터는 쿼리에서 반환되지 않습니다.
users
컬렉션의 문서는 애플리케이션에서 다음 데이터 클래스로 모델링됩니다.
data class User( val id: BsonObjectId = BsonObjectId(), val gender: String, val age: Int, val email: String, )
MongoDB Shell 사용
collection.find({ "gender": "female", "age" : { "$gt": 29 }}, { "_id": 0, "email": 1 })
빌더를 사용하지 않고
data class Results(val email: String) val filter = Document().append("gender", "female").append("age", Document().append("\$gt", 29)) val projection = Document().append("_id", 0).append("email", 1) val results = collection.find<Results>(filter).projection(projection)
빌더 사용
import com.mongodb.client.model.Filters import com.mongodb.client.model.Projections
data class Results(val email: String) val filter = Filters.and(Filters.eq(User::gender.name, "female"), Filters.gt(User::age.name, 29)) val projection = Projections.fields(Projections.excludeId(), Projections.include("email")) val results = collection.find<Results>(filter).projection(projection)