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

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

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

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

このガイドの例では、 Atlasサンプルデータセットsample_restaurantsデータベースのrestaurantsコレクションを使用します。 PHPアプリケーションからこのコレクションにアクセスするには、Atlas クラスターに接続するMongoDB\Clientをインスタンス化し、次の値を$collection変数に割り当てます。

$collection = $client->sample_restaurants->restaurants;

MongoDB配置を作成し、サンプルデータセットをロードする方法については、MongoDBの使用開始ガイドを参照してください。

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

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

$results = $collection->distinct('borough', []);
foreach ($results as $value) {
echo json_encode($value), PHP_EOL;
}
"Bronx"
"Manhattan"
"Missing"
"Queens"
"Staten Island"

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

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

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

$results = $collection->distinct('borough', ['cuisine' => 'Italian']);
foreach ($results as $value) {
echo json_encode($value), PHP_EOL;
}
"Bronx"
"Manhattan"
"Queens"
"Staten Island"

オプション値を指定する配列を渡すことで、 distinct()メソッドの動作を変更できます。 次の表では、操作をカスタマイズするために設定できるいくつかのオプションについて説明します。

オプション
説明

collation

操作に使用する 照合
。詳細については、このページの「照合」セクションを参照してください。タイプ:array|object

maxTimeMS


操作を実行できる最大時間(ミリ秒単位)。タイプ:integer

comment


操作に添付するコメント。タイプ: 任意の有効なBSONタイプ

readPreference

操作に使用する読み込み設定 (read preference)です。詳細については、サーバー マニュアルの「 読み込み設定
」を参照してください。タイプ:MongoDB\Driver\ReadPreference

hint


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

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

$query = ['borough' => 'Bronx', 'cuisine' => 'Pizza'];
$options = ['comment' => 'Bronx pizza restaurants'];
$results = $collection->distinct('name', $query, $options);
foreach ($results as $value) {
echo json_encode($value), PHP_EOL;
}
"$1.25 Pizza"
"18 East Gunhill Pizza"
"2 Bros"
"Aenos Pizza"
"Alitalia Pizza Restaurant"
"Amici Pizza And Pasta"
"Angie'S Cafe Pizza"
...

操作の 照合 を指定するには、collation オプションを設定する $options 配列パラメータを操作メソッドに渡します。照合ルールを構成する配列に collation オプションを割り当てます。

次の表では、照合を構成するために設定できるフィールドについて説明しています。

フィールド
説明

locale

(必須)Unicode 用の国際コンポーネント(ICU)ロケールを指定します。サポートされているロケールのリストについては、 MongoDB Serverマニュアルの 「照合ロケールとデフォルト パラメーター」

を参照してください。データ型:string

caseLevel

(任意)大文字と小文字の比較を含めるかどうかを指定します。

trueに設定すると、比較動作は フィールドの値によって異なります。strength

strength 1の場合、 PHPライブラリは基本文字と大文字と小文字を比較します。


- がstrength 2の場合、 PHPライブラリは基本文字、発音区別符号、その他のセカンダリ
レベルの相違、大文字と小文字を比較します。

-strength がその他の値の場合、このフィールドは無視されます。

falseに設定されている場合、 PHPライブラリには強度レベル1 または2

での大文字と小文字の比較が含まれません。データ型:bool
デフォルト:false

caseFirst



(任意)三次レベルの比較中に、大文字と小文字の相違のソート順序を指定します。データ型:string
デフォルト:"off"

strength

(任意) ICU

ドキュメントで定義されている比較のレベルを指定します。データ型:int
デフォルト:3

numericOrdering

(任意)ドライバーが数字の string を数値として比較するかどうかを指定します。

trueに設定されている場合、 PHPライブラリは数字の string を数値として比較します。例、string10 と " "2 を比較する場合、ライブラリは string の数値を使用し、"10 " を "2 " より大きいものとして扱います。

falseに設定されている場合、 PHPライブラリは数字の string を string として比較します。例、string "10 " と " " を比較する場合、ライブラリは一度に2 1 文字ずつ比較し、" " を10 "2 " より小さいものとして扱います。詳細については、

MongoDB Serverマニュアルの「 照合制限

」を参照してください。データ型:bool
デフォルト:false

alternate



(任意)ライブラリが空白と句読点を比較目的の基本文字として考慮するかどうかを指定します。データ型:string
デフォルト:"non-ignorable"

maxVariable

(任意) alternate"shifted"フィールドが

に設定されている場合にライブラリが無視可能と見なす文字を指定します。データ型:string
デフォルト:"punct"

backwards

(任意)発音区別符号を含む string を、string

の後ろから前にソートするかどうかを指定します。データ型:bool
デフォルト:false

照合と各フィールドに可能な値の詳細については、 MongoDB Serverマニュアルの「 照合 」エントリを参照してください。

distinct()メソッドの詳細については、 APIドキュメントのMongoDB\Collection::distinct()を参照してください。