Overview
このセクションには、利用可能な各ビルダの使用方法に関するガイドと、 Kotlinドライバー ビルダ クラスが提供するユーティリティを示します。
Kotlinドライバーには、 CRUD操作の実行と 集計API の使用プロセスを簡素化するためのクラスが用意されています。 静的ユーティリティ メソッドを使用すると、クエリやその他の種類のドキュメントをより効率的に構築できます。
注意
入力検証
ビルダ クラスは、基礎の MongoDB 操作に入力値を渡しますが、その値をサニタイズしません。ビルダ メソッドに渡す前に、アプリケーション内で入力を検証します。
ビルダを使用する理由
ビルダ クラスを使用する場合は、次の製品を活用します。
開発中にエラーを見つけるためのKotlinコンパイラー
検出、デバッグ、コード完了のための IDE
ビルダを使用する場合、 Kotlinコンパイラーと IDE は、スペルのない演算子やパラメーターの欠落などのエラーを早期に検出します。 代わりにMongoDB シェルまたはプレーンのKotlin を使用する場合は、演算子を string として書込み (write) しても問題が視覚的に明確にならないため、これらのエラーはコンパイル時間ではなくランタイムにプッシュされます。
ビルダ クラスを使用すると、演算子をメソッドとして書込むことができ、IDE はコードにエラーがあるかどうかを即座に示すようになります。 開発中に、IDE は使用できるメソッドを表示することも、プレースホルダー パラメーターを使用してコードを完了することもできます。
サンプルシナリオ
次の条件を満たす usersコレクション内のすべてのユーザーにマーケティングメールを送信するとします。
genderフィールドの値が"female"のユーザーageフィールドの値が29より大きいユーザー
また、メールアドレスのみを返すクエリも必要です。
usersコレクション内のドキュメントは、次のデータクラスによってモデル化されます。
data class User( val id: BsonObjectId = BsonObjectId(), val gender: String, val age: Int, val email: String, )
MongoDB Shell の使用
次のコードは、 MongoDB Shell でクエリを実行するために使用するコマンドを提供します。
collection.find({ "gender": "female", "age" : { "$gt": 29 }}, { "_id": 0, "email": 1 })
ビルダを使用しない
次のコードは、 Kotlinドライバー のビルダなしで作成した検索操作を提供します。
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)
この場合、フィルターに "\$gt" 演算子を書き込むときに簡単にエラーを含めることができますが、IDE は関連するエラーを実行時にのみ返します。
ビルダの使用
次のコードは、 Kotlinドライバーのビルダを使用して作成した検索操作を提供します。
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)
利用可能なビルダ
集計:集計パイプラインを構築
Aggregates.vectorSearch()メソッドの詳細については、MongoDB Vector Search を参照してください
フィルター: クエリフィルターを構築します
インデックス:インデックスキーの構築
プロジェクション: プロジェクションを構築する
ソート: ソート基準を構築する
更新: 更新ドキュメントをビルドします
「 データ クラスでビルダを使用する 」ガイドでは、前述のビルダ クラスをデータクラスのプロパティで直接使用する方法に関する例を紹介します。このガイドは、アプリケーションの型安全性を高め、 Kotlin の相互運用性を向上させるのに役立つ場合があります。