ビルダ
Overview
このセクションには、利用可能な各ビルダの使用方法に関するガイドと、MongoDB Kotlin ドライバー ビルダ クラスが提供するユーティリティを示します。
Kotlin ドライバーは、開発者が CRUD 操作と Aggregation API を使用するためのプロセスを簡素化するためのクラスを提供します。 静的ユーティリティ メソッドを使用すると、より効率的にクエリを構築できます。
ビルダを使用する理由
ビルダー クラスを使用すると、次の権限を活用できます。
開発中にエラーを見つけるための Kotlin コンパイラーと IDE
検出とコード完了のための IDE
ビルダを使用する場合、 Kotlin コンパイラーと IDE はスペルのない演算子などのエラーを早期に検出します。 MongoDB shell またはプレーン Kotlin を使用する場合は、演算子を string として書込みますが、問題を視覚的に示す手段はなく、これらのエラーをコンパイル時間ではなくランタイムに強制します。
ビルダ クラスでは、メソッドとして演算子を記述します。 IDE はすぐにアンダースコアを付け、右側に問題があることを示す赤色のバーを表示します。 開発中、IDE には使用できるメソッドも表示されます。 使用する方法を選択すると、プレースホルダー パラメーターを使用してコードが自動的に完了します。
Scenario
次の基準で、 users
コレクション内のすべてのユーザーにマーケティング メールを送信したいとします。
性が
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)