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 を 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

(必須) International Components for Unicode (ICU) ロケールを指定します。サポートされているロケールの一覧については、MongoDB Server マニュアルの「照合ロケールとデフォルトパラメータ」を参照してください。

データ型: string

caseLevel

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

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

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

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

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

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

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

caseFirst

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

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

strength

(任意) ICU ドキュメントで定義されている、実行する比較のレベルを指定します。

データ型: int
デフォルト: 3

numericOrdering

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

true に設定すると、PHP ライブラリは数字の文字列を数値として比較します。例えば、文字列「10」と「2」を比較する場合、ライブラリは文字列の数値を使用し、「10」を「2」より大きいとして処理します。

falseに設定すると、PHP ライブラリは数値型の文字列を文字列として比較します。例えば、文字列 "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 ドキュメントを参照してください。