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

返すフィールドを指定する

項目一覧

  • Overview
  • サンプル データ
  • プロジェクションのタイプ
  • 含めるフィールドの指定
  • _idフィールドを除外する
  • 詳細情報
  • API ドキュメント

このガイドでは、プロジェクションを使用して、読み取り操作から返されるフィールドを指定する方法を学習できます。 プロジェクションは、MongoDB がクエリから返すフィールドを指定するドキュメントです。

このガイドの例では、 Atlas サンプル データセットsample_restaurantsデータベース内の restaurantsコレクションを使用します。 MongoDB Atlas クラスターを無料で作成して、サンプル データセットをロードする方法については、 「 Atlas を使い始める 」ガイドを参照してください。

このコレクション内のドキュメントは、次の Kotlin データ クラスによってモデル化されます。

data class Restaurant(
@BsonId
val id: ObjectId? = null,
val name: String,
val borough: String,
val cuisine: String
)

プロジェクションを使用して、返されるドキュメントに含めるフィールドを指定したり、除外するフィールドを指定したりできます。

プロジェクションに含める特定のフィールドを指定すると、他のすべてのフィールドは暗黙的に除外されます(デフォルトで含まれる_idフィールドを除く)。 _idフィールドを除外しない限り、1 つのプロジェクションに包含ステートメントと除外ステートメントを組み合わせることはできません。

返されたドキュメントから_idフィールドを削除するには、明示的に除外する必要があります。

結果に含めるフィールドを指定するには、次の構文を使用します。

val projection = Projection.fields(
Projections.include(<fieldName1>, <fieldName2>, ...)
)

次の例では、 find()メソッドを使用して、 nameフィールドの値が"Emerald Pub"であるすべてのレストランを検索します。 次に、プロジェクションを使用して、返されたドキュメントのnamecuisineboroughフィールドのみを返します。

val projection = Projections.fields(
Projections.include(
Restaurant::name.name,
Restaurant::cuisine.name,
Restaurant::borough.name
)
)
val results = collection
.find(eq(Restaurant::name.name, "Emerald Pub"))
.projection(projection)
results.forEach { result ->
println(result)
}

含めるフィールドを指定する場合は、返されるドキュメントから_idフィールドを除外することもできます。

次の例では、前の例と同じクエリを実行しますが、プロジェクションから_idフィールドを除外しています。

val projection = Projections.fields(
Projections.excludeId(),
Projections.include(
Restaurant::name.name,
Restaurant::cuisine.name,
Restaurant::borough.name
)
)
val results = collection
.find(eq(Restaurant::name.name, "Emerald Pub"))
.projection(projection)
results.forEach { result ->
println(result)
}

プロジェクションの詳細については、MongoDB Server マニュアルのプロジェクト フィールド ガイドを参照してください。

このガイドで説明したメソッドや型の詳細については、次の API ドキュメントを参照してください。

  • find()

  • project()

戻る

Retrieve Data