Docs Menu
Docs Home
/ / /
Scala
/

個別のフィールド値の取得

項目一覧

  • Overview
  • サンプル データ
  • Retrieve Distinct Values
  • コレクション全体で値を取得
  • 指定されたドキュメント全体で値を取得
  • 個別の動作の変更
  • API ドキュメント

このガイドでは、 Scalaドライバーを使用して、コレクション全体で指定されたフィールドの個別の値を取得する方法を学習できます。

コレクション内では、異なるドキュメントによって単一のフィールドの異なる値が含まれる場合があります。例、restaurantsコレクション内の 1 つのドキュメントの borough 値は "Manhattan" で、別のドキュメントの borough 値は "Queens" です。 Scalaドライバーを使用すると、コレクション内の複数のドキュメントにわたってフィールドに含まれるすべての一意の値を検索できます。

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

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

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

指定されたフィールドの個別の値を検索するには、distinct() メソッドを呼び出し、個別の値を検索するフィールドの名前を渡します。

次の例では、 restaurantsコレクション内のboroughフィールドの個別の値を取得します。

collection.distinct("borough")
.subscribe((value: String) => println(value),
(e: Throwable) => println(s"There was an error: $e"))
Bronx
Brooklyn
Manhattan
Missing
Queens
Staten Island

この操作はDistinctObservableクラスのインスタンスを返します。これを反復処理して、個別の boroughフィールド値にアクセスできます。 boroughフィールドでは複数のドキュメントが同じ値になっていますが、各値は結果に 1 回だけ表示されます。

distinct()メソッドにクエリフィルターを提供すると、コレクション内のドキュメントのサブセット内で個別のフィールド値を検索できます。クエリフィルターは、操作内のドキュメントを一致させるために使用される検索条件を指定する式です。クエリフィルターの作成の詳細については、 クエリの指定ガイドを参照してください。

次の例では、 cuisineフィールドの値が"Italian"であるすべてのドキュメントのboroughフィールドの個別の値を取得します。

val filter = equal("cuisine", "Italian")
collection.distinct("borough", filter)
.subscribe((value: String) => println(value),
(e: Throwable) => println(s"There was an error: $e"))
Bronx
Brooklyn
Manhattan
Queens
Staten Island

DistinctObservableクラスによって提供されるメソッドを連鎖させることで、distinct() メソッドの動作を変更できます。次の表では、これらの方法の一部について説明しています。

方式
説明

collation()

Sets the collation to use for the operation.
Parameter Type: Collation

maxTime()

Sets the maximum amount of time that the operation can run.
Parameter Type: Duration

comment()

Attaches a comment to the operation.
Parameter Type: BsonValue or String

first()

Retrieves only the first distinct field value.

次の例では、 boroughフィールド値が "Bronx" で、かつ cuisineフィールド値が "Pizza" であるすべてのドキュメントの nameフィールドの個別の値を取得します。次に、comment() メソッドを distinct() に連鎖させて、操作にコメントを追加します。

val filter = and(equal("borough", "Bronx"), equal("cuisine", "Pizza"))
collection.distinct("name", filter)
.comment("Bronx Pizza restaurants")
.subscribe((value: String) => println(value),
(e: Throwable) => println(s"There was an error: $e"))
$1.25 Pizza
18 East Gunhill Pizza
2 Bros
Aenos Pizza
Alitalia Pizza Restaurant
Amici Pizza And Pasta
Angie'S Cafe Pizza
...

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

戻る

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