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

Retrieve Data

このガイドでは、 MongoDB PHPライブラリを使用して、読み取り操作によりMongoDBコレクションからデータを検索する方法を学習できます。 MongoDB\Collection::find()MongoDB\Collection::findOne()コレクションで メソッドまたは メソッドを呼び出して、基準のセットに一致するドキュメントを検索できます。

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

$collection = $client->sample_training->companies;

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

MongoDB PHPライブラリには、コレクションからドキュメントを取得するための 2 つの方法MongoDB\Collection::findOne()MongoDB\Collection::find()が含まれています。 これらのメソッドはクエリフィルターを受け取り、1 つ以上の一致するドキュメントを返します。 クエリフィルターは、ドライバーがクエリ内のドキュメントを検索するために使用する検索条件を指定します。

Tip

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

コレクション内の 1 つのドキュメントを検索するには、 MongoDB\Collection::findOne()メソッドを呼び出し、検索するドキュメントの基準を指定するクエリフィルターを渡します。

findOne()メソッドは、 arrayobject 、またはnullの値を返します。 クエリフィルターがドキュメントと一致する場合、メソッドはドキュメントを含むarray|objectインスタンスを返します。 戻り値の型は、 typeMapオプションの値によって異なります。 クエリフィルターがどのドキュメントにも一致しない場合、メソッドはnullを返します。

Tip

typeMapなどのfindOne()オプションの詳細については、このガイドの「検索動作の変更」セクションを参照してください。

クエリフィルターが複数のドキュメントに一致する場合、 findOne()メソッドは検索した結果から最初に一致するドキュメントを返します。

次の例では、 findOne()メソッドを使用して、 nameフィールドの値が'LinkedIn'になっている最初のドキュメントを検索します。

$document = $collection->findOne(['name' => 'LinkedIn']);
echo json_encode($document), PHP_EOL;
{"_id":{"$oid":"..."},"name":"LinkedIn","permalink":"linkedin","crunchbase_url":
"http:\/\/www.crunchbase.com\/company\/linkedin","homepage_url":"http:\/\/linkedin.com",
... }

Tip

並び替え順

ソート条件が指定されていない場合、 findOne()メソッドはディスク上の自然な順序で最初のドキュメントを返します。

コレクション内の複数のドキュメントを検索するには、検索するドキュメントの基準を指定するクエリフィルターを MongoDB\Collection::find() メソッドに渡します。

次の例では、 find()メソッドを使用して、 founded_yearフィールドの値が1970であるすべてのドキュメントを検索します。

$results = $collection->find(['founded_year' => 1970]);

find()メソッドはMongoDB\Driver\Cursorのインスタンスを返します。これを反復処理して一致するドキュメントを確認できます。 カーソルは、アプリケーションがデータベースの結果を反復処理しながら、特定の時点でメモリ内に結果のサブセットのみを保持できるようにするメカニズムです。 カーソルは、 find()メソッドが大量のドキュメントを返す場合に便利です。

次の例に示すように、 foreachループを使用して、カーソル内のドキュメントを反復処理できます。

foreach ($results as $doc) {
echo json_encode($doc), PHP_EOL;
}
{"_id":{"$oid":"..."},"name":"Mitsubishi Motors","permalink":"mitsubishi-motors",
"crunchbase_url":"http:\/\/www.crunchbase.com\/company\/mitsubishi-motors",
... }
{"_id":{"$oid":"..."},"name":"Western Digital","permalink":"western-digital",
"crunchbase_url":"http:\/\/www.crunchbase.com\/company\/western-digital",
... }
{"_id":{"$oid":"..."},"name":"Celarayn","permalink":"celarayn","crunchbase_url":
"http:\/\/www.crunchbase.com\/company\/celarayn",
... }

注意

すべてのドキュメントの検索

コレクション内のすべてのドキュメントを検索するには、 find()メソッドに空のフィルターを渡します。

$cursor = $collection->find([]);

オプション値を指定する配列をパラメーターとして渡すことで、 MongoDB\Collection::find()メソッドとMongoDB\Collection::findOne()メソッドの動作を変更できます。 次の表では、 配列に設定できるオプションの一部を説明しています。

オプション
説明

batchSize

クエリ結果で返される各バッチする内のドキュメントの最大数。デフォルトでは 、find コマンドの初期バッチするサイズは101 ドキュメントで、後続の各バッチするの最大サイズは16 メビバイト(MiB)です。このオプションを使用すると、16 MiB より小さい制限が適用できますが、超えることはありません。 を、バッチがbatchSize 16MiB
を超える制限に設定している場合、このオプションは効果がありません。タイプ:integer

collation

操作に使用する 照合 。デフォルト値は、コレクションに指定された 照合
です。詳細については、このページの「照合」セクションを参照してください。タイプ:array|object

comment


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

cursorType

操作に使用するカーソルのタイプ。デフォルト値はMongoDB\Operation\Find::NON_TAILABLE
です。タイプ:MongoDB\Operation\Find

limit


操作によって返されるドキュメントの最大数。タイプ:integer

skip


結果を返す前にスキップするドキュメントの数。タイプ:integer

sort


操作が一致するドキュメントを返す順序。タイプ:array|object

typeMap

カーソルに適用するタイプ マップ。BSON ドキュメントをPHP値に変換する方法を決定します。デフォルト値はコレクションのタイプ
マップです。タイプ:array

次の例では、 find()メソッドを使用して、 number_of_employeesフィールドの値が1000であるすべてのドキュメントを検索します。 この例ではlimitオプションを使用して最大5の結果が返されます。

$results = $collection->find(
['number_of_employees' => 1000],
['limit' => 5],
);
foreach ($results as $doc) {
echo json_encode($doc), PHP_EOL;
}

オプションの完全なリストについては、 findOne()およびfind()パラメーターのAPIドキュメントを参照してください。

操作の 照合 を指定するには、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マニュアルの「 照合 」エントリを参照してください。

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

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