Docs Menu
Docs Home
/ / /
Kotlin Sync ドライバー

ビルダ コード パターンを使用

項目一覧

  • Overview
  • ビルダを使用する理由
  • MongoDB Query API
  • ドキュメント クラス フィルター
  • ビルダーAPI
  • データ クラスを持つビルダの使用

このページでは、コード内で利用可能なさまざまなビルダを使用する方法と、提供されているビルダを使用する利点について説明します。

Kotlin Sync ドライバーは、開発者がクエリと集計を効率的に構築できるようにするタイプセーフなビルダ クラスとメソッドを提供します。

利用可能なビルダのクラスとメソッドの詳細については、次のAPIドキュメントの各セクションを参照してください。

  • アキュムレータ

  • 集計

  • フィルター

  • Indexes

  • プロジェクション

  • ソート

  • Updates

プレーン Kotlin のみを使用して BSON クエリ ドキュメントを構築する場合、実行時まで構文エラーを識別できません。 ビルダは構文の相関性を確保するのに役立ち、 BSON ドキュメントを作成するよりも冗長性を減らすことができます。

このセクションでは、次の条件を満たすusersコレクション内のドキュメントの emailフィールド値を取得するための 3 つの同等の方法を示します。

  • gender 値は "female"

  • age の値が より大きい 29

次のデータクラスは、 usersコレクション内のドキュメントをモデル化します。

data class User(
@BsonId val id: ObjectId,
val gender: String,
val age: Int,
val email: String
)

次のデータクラスは、クエリによって返された結果をモデル化します。

data class Email(
val email: String
)

次のサンプルでは、 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)

この場合、フィルターに "\$gt" 演算子を書き込むときに簡単にエラーを含めることができますが、IDE は関連するエラーを実行時にのみ返します。

次の例では、 ビルダ ヘルパーを使用してクエリを実行します。

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)

データ クラスでビルダを使用するガイドでは、前述のビルダ クラスをデータクラスのプロパティで直接使用する方法の例を紹介します。このガイドは、アプリケーションの型安全性を高め、 Kotlin の相互運用性を向上させるのに役立つ場合があります。

戻る

時系列