Docs Menu
Docs Home
/ / /
Scala
/

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

項目一覧

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

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

このガイドの例では、restaurants sample_restaurantsAtlasサンプルデータセット の データベース内の コレクションを使用します。 Scalaアプリケーションからこのコレクションにアクセスするには、AtlasMongoClient クラスターに接続する を作成し、 変数と 変数に次の値を割り当てます。databasecollection

val database: MongoDatabase = client.getDatabase("sample_restaurants")
val collection: MongoCollection[Document] = database.getCollection("restaurants")

MongoDB Atlasクラスターを無料で作成して、サンプルデータセットをロードする方法については、 「Atlas を使い始める」ガイドを参照してください。

プロジェクションを使用して、返されるドキュメントに含めるフィールドを指定したり、除外するフィールドを指定したりできます。 _idフィールドを除外しない限り、1 つのプロジェクションに包含ステートメントと除外ステートメントを組み合わせることはできません。

結果に含めるフィールドを指定するには、projection() メソッドと find() メソッドをチェーンします。 Projectionsクラスには、含めるフィールドを設定するために使用できる include()ヘルパーメソッドが用意されています。

次の例では、 find() メソッドを使用して、nameフィールドの値が "Emerald Pub" であるすべてのレストランを検索します。次に、コードは projection() メソッドと include() メソッドを呼び出して、一致するドキュメントの namecuisineborough フィールドのみを返すように検索操作に指示します。

collection
.find(equal("name", "Emerald Pub"))
.projection(include("name", "cuisine", "borough"))
.subscribe((doc: Document) => println(doc.toJson()),
(e: Throwable) => println(s"There was an error: $e"))
{"_id": {"$oid": "..."}, "borough": "Manhattan", "cuisine": "American", "name": "Emerald Pub"}
{"_id": {"$oid": "..."}, "borough": "Queens", "cuisine": "American", "name": "Emerald Pub"}

プロジェクションを使用して返されるドキュメントに含めるフィールドを指定すると、 _idフィールドもデフォルトで含まれます。 他のすべてのフィールドは暗黙的に除外されます。 返されるドキュメントから_idフィールドを削除するには、明示的に除外する必要があります。

含めるフィールドを指定するときは、返されるドキュメントから _idフィールドを除外することもできます。 Projectionsクラスには、このフィールドを省略するために使用できる excludeId()ヘルパーメソッドが用意されています。

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

collection
.find(equal("name", "Emerald Pub"))
.projection(fields(include("name", "cuisine", "borough"), excludeId()))
.subscribe((doc: Document) => println(doc.toJson()),
(e: Throwable) => println(s"There was an error: $e"))
{"borough": "Manhattan", "cuisine": "American", "name": "Emerald Pub"}
{"borough": "Queens", "cuisine": "American", "name": "Emerald Pub"}

結果から除外するフィールドを指定するには、projection() メソッドと find() メソッドをチェーンします。 Projectionsクラスには、除外するフィールドを設定するために使用できる exclude()ヘルパーメソッドが用意されています。

次の例では、 find() メソッドを使用して、nameフィールドの値が "Emerald Pub" であるすべてのレストランを検索します。次に、コードは projection() メソッドと exclude() メソッドを呼び出して、結果の name フィールドと address フィールドを省略するように検索操作に指示します。

collection
.find(equal("name", "Emerald Pub"))
.projection(exclude("name", "address"))
.subscribe((doc: Document) => println(doc.toJson()),
(e: Throwable) => println(s"There was an error: $e"))
{"_id": {"$oid": "..."}, "borough": "Manhattan", "cuisine": "American",
"grades": [...], "restaurant_id": "40367329"}
{"_id": {"$oid": "..."}, "borough": "Queens", "cuisine": "American",
"grades": [...], "restaurant_id": "40668598"}

プロジェクションを使用して除外するフィールドを指定すると、指定されていないフィールドは返されるドキュメントに暗黙的に含まれます。

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

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

戻る

返すドキュメントを指定する