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

返すフィールドを指定する

項目一覧

  • Overview
  • サンプル データ
  • プロジェクションのタイプ
  • 含めるフィールドの指定
  • _idフィールドを除外する
  • 除外するフィールドの指定
  • 詳細情報
  • API ドキュメント

このガイドでは、 MongoDB PHPライブラリを使用して、プロジェクションを使用して読み取り操作から返されるフィールドを指定する方法を学習できます。 プロジェクションは、 MongoDBがクエリから返すフィールドを指定するドキュメントです。

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

$collection = $client->sample_restaurants->restaurants;

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

プロジェクションを使用して、返されるドキュメントに含めるフィールドを指定したり、除外するフィールドを指定したりできます。 _idフィールドを除外しない限り、1 つのプロジェクションに包含ステートメントと除外ステートメントを組み合わせることはできません。

MongoDB\Collection::findOne()MongoDB\Collection::find()結果に含めるフィールドを指定するには、projection オプションを設定する メソッドまたは メソッドにオプション配列を渡します。このオプションを設定するには、次の構文を使用します。

$options = [
'projection' => [
'<field name>' => 1,
],
];

次の例では、オプション配列を作成し、一致するドキュメントのnamecuisine 、およびboroughフィールドのみを返すようにprojectionオプションを設定します。 次に、 find()メソッドを呼び出して、 nameフィールドの値が'Emerald Pub'で、オプション配列をfind()にパラメータとして渡しているすべてのレストランを検索します。

$options = [
'projection' => [
'name' => 1,
'cuisine' => 1,
'borough' => 1,
],
];
$cursor = $collection->find(['name' => 'Emerald Pub'], $options);
foreach ($cursor as $doc) {
echo json_encode($doc), PHP_EOL;
}
{"_id":{"$oid":"..."},"borough":"Manhattan","cuisine":"American","name":"Emerald Pub"}
{"_id":{"$oid":"..."},"borough":"Queens","cuisine":"American","name":"Emerald Pub"}

プロジェクションを使用して返されるドキュメントに含めるフィールドを指定すると、 _idフィールドもデフォルトで含まれます。 他のすべてのフィールドは暗黙的に除外されます。 返されるドキュメントから_idフィールドを削除するには、明示的に除外する必要があります。

含めるフィールドを指定する場合は、返されるドキュメントから_idフィールドを除外することもできます。

次の例では、前の例と同じクエリを実行しますが、プロジェクションから_idフィールドを除外します。

$options = [
'projection' => [
'_id' => 0,
'name' => 1,
'cuisine' => 1,
'borough' => 1,
],
];
$cursor = $collection->find(['name' => 'Emerald Pub'], $options);
foreach ($cursor as $doc) {
echo json_encode($doc), PHP_EOL;
}
{"borough":"Manhattan","cuisine":"American","name":"Emerald Pub"}
{"borough":"Queens","cuisine":"American","name":"Emerald Pub"}

MongoDB\Collection::findOne()MongoDB\Collection::find()結果から除外するフィールドを指定するには、projection オプションを設定する メソッドまたは メソッドにオプション配列を渡します。このオプションを設定するには、次の構文を使用します。

$options = [
'projection' => [
'<field name>' => 0,
],
];

次の例では、オプション配列を作成し、projection gradesaddressオプションを設定して一致するドキュメントの フィールドと フィールドを除外します。次に、 find()メソッドを呼び出して、 nameフィールドの値が'Emerald Pub'であるすべてのレストランを検索し、オプション配列をfind()にパラメータとして渡します。

$options = [
'projection' => [
'grades' => 0,
'address' => 0,
],
];
$cursor = $collection->find(['name' => 'Emerald Pub'], $options);
foreach ($cursor as $doc) {
echo json_encode($doc), PHP_EOL;
}
{"_id":{"$oid":"..."},"borough":"Manhattan","cuisine":"American",
"name":"Emerald Pub","restaurant_id":"40367329"}
{"_id":{"$oid":"..."},"borough":"Queens","cuisine":"American",
"name":"Emerald Pub","restaurant_id":"40668598"}

プロジェクションを使用して除外するフィールドを指定すると、指定されていないフィールドは返されるドキュメントに暗黙的に含まれます。

プロジェクションの詳細については、 MongoDB Serverマニュアルの「プロジェクト フィールド 」ガイドを参照してください。

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

  • MongoDB\Collection::findOne()

  • MongoDB\Collection::find()

戻る

Retrieve Data