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

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

このガイドでは、 Rustドライバーを使用して、コレクション全体で指定されたフィールドの個別の値を検索することを学ぶことができます。

コレクション内では、ドキュメントには単一のフィールドに異なる値が含まれる場合があります。例、restaurantsコレクション内の 1 つのドキュメントの borough 値は "Manhattan" で、別のドキュメントの borough 値は "Queens" です。Rustドライバーを使用して、restaurantsコレクション内のすべてのドキュメントにわたって boroughフィールドから "Manhattan""Queens"、およびその他のすべての一意の値を取得できます。

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

restaurantsコレクション内のドキュメントには、Document 型またはカスタムデータ型のインスタンスとしてアクセスできます。コレクションのデータを表すデータ型を指定するには、<T> 型パラメータを次のいずれかの値に置き換えます。

  • <Document>:コレクションドキュメントをBSONドキュメントとして表現します

  • <Restaurant>: コード例で定義されている Restaurant 構造体のインスタンスとしてコレクションドキュメントを表します

指定されたフィールドの個別の値を検索するには、Collection インスタンスで distinct() メソッドを呼び出し、個別の値を見つけたいフィールドの名前を渡します。

distinct() メソッドは、Bson 値のベクトルである Vec<Bson>オブジェクトとして個別の値のリストを返します。

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

各実行時に対応するコードを表示するには、 AsynchronousタブまたはSynchronousタブを選択します。

let boroughs = my_coll.distinct("borough", None).await?;
println!("List of field values for 'borough':");
for b in boroughs {
println!("{:?}", b);
}
List of field values for 'borough':
String("Bronx")
String("Brooklyn")
String("Manhattan")
String("Missing")
String("Queens")
String("Staten Island")
let boroughs = my_coll.distinct("borough", None).run()?;
println!("List of field values for 'borough':");
for b in boroughs {
println!("{:?}", b);
}
List of field values for 'borough':
String("Bronx")
String("Brooklyn")
String("Manhattan")
String("Missing")
String("Queens")
String("Staten Island")

この操作では、個別の boroughフィールド値をそれぞれ保存するベクトルが返されます。boroughフィールドでは複数のドキュメントが同じ値になっていますが、各値は結果に 1 回だけ表示されます。

distinct() メソッドにクエリフィルターを提供すると、コレクション内のドキュメントのサブセット全体で個別のフィールド値を検索できます。クエリフィルターは、操作内のドキュメントを一致させるために使用される検索条件を指定する式です。例、distinct() メソッドを使用すると、一致したドキュメントのサブセットのみから個別のフィールド値を検索できます。

Tip

クエリフィルターの作成の詳細については、クエリの指定ガイドを参照してください。

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

各実行時に対応するコードを表示するには、 AsynchronousタブまたはSynchronousタブを選択します。

let filter = doc! { "cuisine": "Turkish" };
let boroughs = my_coll.distinct("borough", filter).await?;
println!("List of field values for 'borough':");
for b in boroughs {
println!("{:?}", b);
}
List of field values for 'borough':
String("Brooklyn")
String("Manhattan")
String("Queens")
String("Staten Island")
let filter = doc! { "cuisine": "Turkish" };
let boroughs = my_coll.distinct("borough", filter).run()?;
println!("List of field values for 'borough':");
for b in boroughs {
println!("{:?}", b);
}
List of field values for 'borough':
String("Brooklyn")
String("Manhattan")
String("Queens")
String("Staten Island")

distinct() メソッドの動作を変更するには、await または run() メソッドを呼び出す前に、1 つ以上のオプション メソッドを count_documents() 呼び出しに連結します。次の表では、個別の操作をカスタマイズするために設定できるオプションについて説明します。

オプション
説明

collation()

操作に使用する 照合
。タイプ:Collation

hint()

操作に使用するインデックス。
タイプ: Hint

comment()

操作に添付するコメント。
タイプ: Bson

max_time()

操作を実行できる最大時間。
タイプ: Duration

read_concern()

操作に使用する読み取り保証 (read concern)。
タイプ: ReadConcern

selection_criteria()

操作に使用する読み込み設定 (read preference) とタグを指定します。
タイプ: SelectionCriteria

distinct() メソッドの詳細については、API ドキュメントをご覧ください。