Overview
このガイドでは、次のオプションを メソッドまたはMongoDB\Collection::find() MongoDB\Collection::findOne()メソッドに渡して、読み取り操作から返されるドキュメントとタイプを指定する方法を学習できます。
limit : クエリから返されるドキュメントの最大数を指定します
sort : 返されるドキュメントのソート順序を指定します
skip : クエリ結果を返す前にスキップするドキュメントの数を指定します
typeMap : 返されたドキュメントを指定されたデータ型に変換します
サンプル データ
The examples in this guide use the restaurants collection in the sample_restaurants 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_restaurants->restaurants;
無料の MongoDB 配置を作成し、サンプルデータセットを読み込む方法については、MongoDB の スタートガイドを参照してください。
Limit
読み取り操作から返されるドキュメントの最大数を指定するには、 limitオプションを設定する配列を作成し、その配列をMongoDB\Collection::find()メソッドのパラメーターとして渡します。
次の例では、 cuisineフィールドの値が'Italian'であるすべてのレストランを検索し、結果を5ドキュメントに制限します。
$cursor = $collection->find( ['cuisine' => 'Italian'], ['limit' => 5], ); foreach ($cursor as $doc) { echo json_encode($doc), PHP_EOL; }
Tip
上記の例では、データベース内の自然な順序に従ってクエリに一致する最初の 5 つのドキュメントが返されます。 次のセクションでは、指定された順序でドキュメントを返す方法について説明します。
Sort
指定した順序でドキュメントを返すには、 sortオプションを設定する配列を作成します。 このオプションを設定する場合、結果を とソート方向でソートするためのフィールドを含めます。 1の値は最低から最高の順にソートされ、 -1の値は最高から最低の順にソートされます。 次に、その配列を メソッドまたはMongoDB\Collection::find() MongoDB\Collection::findOne()メソッドのパラメーターとして渡します。
次の例では、 cuisine値が'Italian'であるすべてのドキュメントを、 nameフィールド値の昇順でソートして返します。
$cursor = $collection->find( ['cuisine' => 'Italian'], ['sort' => ['name' => 1]], ); foreach ($cursor as $doc) { echo json_encode($doc), PHP_EOL; }
スキップ
クエリ結果を返す前に指定した数のドキュメントをスキップするには、skip オプションを設定する配列を作成し、その配列を メソッドまたはMongoDB\Collection::find() MongoDB\Collection::findOne()メソッドのパラメーターとして渡します。
次の例では、 boroughフィールドの値が'Manhattan'であるすべてのドキュメントを返し、最初の10ドキュメントをスキップします。
$cursor = $collection->find( ['borough' => 'Manhattan'], ['skip' => 10], ); foreach ($cursor as $doc) { echo json_encode($doc), PHP_EOL; }
制限、ソート、スキップの組み合わせ
単一のオプション配列でlimit 、 sort 、 skipオプションを設定し、その配列を 読み取り操作のパラメーターとして渡すことができます。 これにより、返されるソートされたドキュメントの最大数を設定して、返される前に指定された数のドキュメントをスキップできます。
次の例では、 cuisineの値が'Italian'である5ドキュメントが返されます。 結果はnameフィールド値の昇順でソートされ、最初の10ドキュメントはスキップされます。
$options = [ 'sort' => ['name' => 1], 'limit' => 5, 'skip' => 10, ]; $cursor = $collection->find(['cuisine' => 'Italian'], $options); foreach ($cursor as $doc) { echo json_encode($doc), PHP_EOL; }
注意
これらのメソッドを呼び出す順序によって、返されるドキュメントは変更されません。 MongoDB PHPライブラリは、最初にソート操作、次にスキップ操作、次に制限操作を実行するために、呼び出しの順序を自動的に並べ替えます。
戻り値の型を指定する
読み取り操作によって返されるドキュメントのデータ型をカスタマイズするには、配列パラメータでtypeMapオプションを渡します。
デフォルトでは 、 MongoDB\Client 、 MongoDB\Database 、またはMongoDB\Collectionインスタンスで呼び出されるメソッドは、次の型マップを使用します。
[ 'array' => 'MongoDB\Model\BSONArray', 'document' => 'MongoDB\Model\BSONDocument', 'root' => 'MongoDB\Model\BSONDocument', ]
このデフォルトの型マップは、次の変換を実行します。
配列から
MongoDB\Model\BSONArrayオブジェクトへトップレベルと埋め込みBSONドキュメントから
MongoDB\Model\BSONDocumentオブジェクトへ
カスタム タイプMongoDB\BSON\Unserializable マップでは、 を実装する任意のタイプ、およびarray stdClassタイプ、 タイプ、object タイプへの変換を指定できます。
例
次の例では、 cuisine値が'Hawaiian'であるすべてのドキュメントを返し、ドキュメントを配列値に変換するにはtypeMapオプションを指定します。
$options = [ 'typeMap' => [ 'root' => 'array', 'document' => 'array', ], ]; $cursor = $collection->find(['cuisine' => 'Hawaiian'], $options); foreach ($cursor as $doc) { print_r($doc) . PHP_EOL; }
詳細情報
ドキュメント取得の詳細については、「データ取得ガイド」を参照してください。
クエリの指定の詳細については、「 クエリの指定」ガイドを参照してください。
API ドキュメント
このガイドで説明したメソッドや型の詳細については、次の API ドキュメントを参照してください。