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()コレクションで メソッドまたは メソッドを呼び出して、基準のセットに一致するドキュメントを検索できます。

The examples in this guide use the companies collection in the sample_training database from the Atlas sample datasets. To access this collection from your PHP application, instantiate a MongoDB\Client that connects to an Atlas cluster and assign the following value to your $collection variable:

$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;

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;
}

注意

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

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

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

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

オプション
説明

batchSize

クエリ結果で返される各バッチする内のドキュメントの最大数。デフォルトでは、find コマンドの初期バッチサイズは 101 ドキュメント、それ以降の各バッチの最大サイズは 16 メビバイト(MiB)です。このオプションは、16 MiB より小さい制限を強制することはできますが、それを超える制限を設定することはできません。batchSize を 16 MiB より大きいバッチになる制限に設定した場合、このオプションは効果がありません。
タイプ: 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

(Required) Specifies the International Components for Unicode (ICU) locale. For a list of supported locales, see Collation Locales and Default Parameters in the MongoDB Server manual.

Data Type: string

caseLevel

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

truestrengthに設定すると、比較の動作は

strength1
フィールドの値に応じて変わります。 - が の場合、PHP ライブラリは基本文字と大文字と小文字を比較します。

-strength2 の場合、PHP
ライブラリは基本文字、分音符号、その他のセカンダリの違い、および大文字と小文字を比較します。

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

false に設定すると、PHP ライブラリは強度レベル 1 または 2 での大文字と小文字の比較を含めません。

データ型: bool
デフォルト: false

caseFirst

(任意) 三次レベルの比較中の大文字と小文字の相違のソート順序を指定します。

データ型: string
デフォルト: "off"

strength

(Optional) Specifies the level of comparison to perform, as defined in the ICU documentation.

Data Type: int
Default: 3

numericOrdering

(Optional) Specifies whether the driver compares numeric strings as numbers.

If set to true, the PHP library compares numeric strings as numbers. For example, when comparing the strings "10" and "2", the library uses the strings' numeric values and treats "10" as greater than "2".

If set to false, the PHP library compares numeric strings as strings. For example, when comparing the strings "10" and "2", the library compares one character at a time and treats "10" as less than "2".

For more information, see Collation Restrictions in the MongoDB Server manual.

Data Type: bool
Default: false

alternate

(任意) ライブラリが空白と句読点を比較目的の基本文字として考慮するかどうかを指定します。

データ型: string
デフォルト: "non-ignorable"

maxVariable

(任意) alternate フィールドが "shifted" に設定されている場合、ライブラリが無視できる文字を指定します。

データ型: string
デフォルト: "punct"

backwards

(任意) 発音区別符号を含む string を、string の後ろから前にソートするかどうかを指定します。

データ型: bool
デフォルト: false

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

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

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