Docs Menu
Docs Home
/ / /
PHP ライブラリ マニュアル
/

Retrieve Data

項目一覧

  • Overview
  • サンプル データ
  • ドキュメントの検索
  • 1 つのドキュメントの検索
  • 複数ドキュメントの検索
  • 検索動作の変更
  • 詳細情報
  • API ドキュメント

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

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

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

MongoDB Atlasクラスターを無料で作成して、サンプルデータセットをロードする方法については、 「Atlas を使い始める」ガイドを参照してください。

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

The number of documents to return per batch. The default value is 101.
Type: integer

collation

The collation to use for the operation. The default value is the collation specified for the collection.
Type: array|object

comment

The comment to attach to the operation.
Type: any BSON type

cursorType

The type of cursor to use for the operation. The default value is MongoDB\Operation\Find::NON_TAILABLE.
Type: MongoDB\Operation\Find

limit

The maximum number of documents the operation can return.
Type: integer

skip

The number of documents to skip before returning results.
Type: integer

sort

The order in which the operation returns matching documents.
Type: array|object

typeMap

The type map to apply to cursors, which determines how BSON documents are converted to PHP values. The default value is the collection's type map.
Type: 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ドキュメントを参照してください。

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

MongoDB PHPライブラリを使用してドキュメントを取得するコード例については、「 MongoDBMongoDBのデータの読み取り 」を参照してください。

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

戻る

Read Data