AI エージェント向け: ドキュメントインデックスは https://www.mongodb.com/ja-jp/docs/llms.txt で利用できます。すべてのページの markdown バージョンは、いずれかの URL パスに .md を追加することで利用できます。
Docs Menu

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

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

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 の スタートガイドを参照してください。

プロジェクションを使用して、返されるドキュメントに含めるフィールドを指定したり、除外するフィールドを指定したりできます。 _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フィールドもデフォルトで含まれます。 他のすべてのフィールドは暗黙的に除外されます。 返されるドキュメントから_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;
}

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

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

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

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