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

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

項目一覧

  • Overview
  • サンプル データ
  • distinct() 方式
  • コレクション全体で個別の値を取得
  • 指定されたドキュメント全体で個別の値を取得
  • 個別の動作の変更
  • 詳細情報
  • API ドキュメント

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

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

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

data class Restaurant(
val name: String,
val borough: String,
val cuisine: String
)

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

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

val results = collection.distinct<String>(Restaurant::borough.name)
results.forEach { result ->
println(result)
}
Bronx
Brooklyn
Manhattan
Missing
Queens
Staten Island

結果には、コレクション内のすべてのドキュメントにわたってboroughフィールドに表示されるすべての個別の値が表示されます。 boroughフィールドの値は複数のドキュメントで同じですが、各値は結果に 1 回だけ表示されます。

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

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

val results = collection.distinct<String>(
Restaurant::borough.name,
eq(Restaurant::cuisine.name, "Italian")
)
results.forEach { result ->
println(result)
}
Bronx
Brooklyn
Manhattan
Queens
Staten Island

distinct()メソッドは、 distinct()メソッド呼び出しにメソッドを連鎖させることで変更できます。 オプションを指定しない場合、ドライバーは操作をカスタマイズしません。

次の表では、 distinct()操作をカスタマイズするために使用できるいくつかの方法について説明します。

方式
説明
batchSize()
Sets the number of documents to return per batch.
collation()
Specifies the kind of language collation to use when sorting results. For more information, see Collation in the MongoDB Server manual.
comment()
Specifies a comment to attach to the operation.
filter()
Sets the query filter to apply to the query.
forEach()
Performs the given action on each element returned by the distinct() operation.
maxTime()
Sets the maximum amount of time to allow the operation to run, in milliseconds.

distinct()メソッドを変更するために使用できるメソッドの完全なリストについては、 DistinguishedIterable APIドキュメントを参照してください。

次の例では、 boroughフィールド値が"Bronx"で、かつcuisineフィールド値が"Pizza"であるすべてのドキュメントのnameフィールドの個別の値を取得します。 また、 commentオプションを使用して操作にコメントを追加します。

val results = collection.distinct<String>(
Restaurant::name.name,
and(
eq(Restaurant::borough.name, "Bronx"),
eq(Restaurant::cuisine.name, "Pizza")
)
).comment("Bronx pizza restaurants")
results.forEach { result ->
println(result)
}
$1.25 Pizza
18 East Gunhill Pizza
2 Bros
Aenos Pizza
Alitalia Pizza Restaurant
...

コマンドの詳細については、 MongoDB Serverマニュアルの 個別の ガイド を参照してください。

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

  • distinct()

  • DistingIterable

戻る

ドキュメントをカウント