ビルダ コード パターンを使用
Overview
このページでは、コード内で利用可能なさまざまなビルダを使用する方法と、提供されているビルダを使用する利点について説明します。
Kotlin Sync ドライバーは、開発者がクエリと集計を効率的に構築できるようにするタイプセーフなビルダ クラスとメソッドを提供します。
ビルダを使用する理由
プレーン Kotlin のみを使用して BSON クエリ ドキュメントを構築する場合、実行時まで構文エラーを識別できません。 ビルダは構文の相関性を確保するのに役立ち、 BSON ドキュメントを作成するよりも冗長性を減らすことができます。
例
このセクションでは、次の条件を満たすusers
コレクション内のドキュメントの email
フィールド値を取得するための 3 つの同等の方法を示します。
gender
値は"female"
age
の値が より大きい29
次のデータクラスは、 users
コレクション内のドキュメントをモデル化します。
data class User( val id: ObjectId, val gender: String, val age: Int, val email: String )
次のデータ クラスは、クエリによって返された結果をモデル化します。
data class Email( val email: String )
MongoDB Query API
次のサンプルでは、 MongoDB Query API を使用してクエリを実行します。
collection.find( { "gender": "female", "age" : { "$gt": 29 }}, { "_id": 0, "email": 1 } )
ドキュメント クラス フィルター
次の例では、 Document
クラスを使用してクエリフィルターを構築し、クエリを実行します。
val filter = Document("gender", "female").append("age", Document("\$gt", 29)) val projection = Document("_id", 0).append("email", 1) val results = collection.find<Email>(filter).projection(projection)
ビルダ
次の例では、 ビルダ ヘルパーを使用してクエリを実行します。
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<Email>(filter).projection(projection)