AI エージェント向け: ドキュメントインデックスは https://www.mongodb.com/ja-jp/docs/llms.txt で利用できます。すべてのページの markdown バージョンは、いずれかの URL パスに .md を追加することで利用できます。
Docs Menu

個別のフィールド値

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

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

次の 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)
}

結果には、コレクション内のすべてのドキュメントにわたって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)
}

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

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

方式
説明

batchSize()

バッチするごとに返されるドキュメントの数を設定します。

collation()

結果をソートするときに使用する言語照合の種類を指定します。詳細については、 MongoDB Serverマニュアルの 「照合」 を参照してください。

comment()

操作に添付するコメントを指定します。

filter()

クエリに適用するクエリフィルターを設定します。

forEach()

distinct()操作によって返される各要素に対して指定されたアクションを実行します。

distinct() メソッドを変更するために使用できるメソッドの完全なリストについては、 DistinctIterable 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)
}

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

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