Docs Menu
Docs Home
/ / /
C++ ドライバー
/

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

項目一覧

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

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

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

auto db = client["sample_restaurants"];
auto collection = db["restaurants"];

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

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

結果に含めるフィールドを指定するには、 mongocxx::options::findクラスのインスタンスを作成し、そのprojectionフィールドを に設定します。 このフィールドを設定するには、次の構文を使用します。

<options instance>.projection(make_document(kvp("<field name>", 1)));

次の例では、 mongocxx::options::findオブジェクトのprojectionフィールドを に設定して、一致するドキュメントのnamecuisine 、およびboroughフィールドのみを返します。 次に、 find()メソッドを呼び出して、 nameフィールドの値が"Emerald Pub"であるすべてのレストランを検索し、 mongocxx::options::findオブジェクトをfind()のパラメーターとして渡します。

mongocxx::options::find opts{};
opts.projection(make_document(kvp("name", 1), kvp("cuisine", 1), kvp("borough", 1)));
auto cursor = collection.find(make_document(kvp("name", "Emerald Pub")), opts);
for(auto&& doc : cursor) {
std::cout << bsoncxx::to_json(doc) << std::endl;
}
{ "_id" : { "$oid" : "..." }, "borough" : "Manhattan", "cuisine" : "American", "name" : "Emerald Pub" }
{ "_id" : { "$oid" : "..." }, "borough" : "Queens", "cuisine" : "American", "name" : "Emerald Pub" }

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

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

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

mongocxx::options::find opts{};
opts.projection(make_document(kvp("_id", 0), kvp("name", 1), kvp("cuisine", 1), kvp("borough", 1)));
auto cursor = collection.find(make_document(kvp("name", "Emerald Pub")), opts);
for(auto&& doc : cursor) {
std::cout << bsoncxx::to_json(doc) << std::endl;
}
{ "borough" : "Manhattan", "cuisine" : "American", "name" : "Emerald Pub" }
{ "borough" : "Queens", "cuisine" : "American", "name" : "Emerald Pub" }

結果で除外するフィールドを指定するには、 mongocxx::options::findクラスのインスタンスを作成し、そのprojectionフィールドを に設定します。 このフィールドを設定するには、次の構文を使用します。

<options instance>.projection(make_document(kvp("<field name>", 0)));

次の例では、projection mongocxx::options::findオブジェクトの フィールドを設定して、一致するドキュメントのgrades フィールドとaddress フィールドを除外します。次に、 find()メソッドを呼び出して、 nameフィールドの値が"Emerald Pub"で、 mongocxx::options::findオブジェクトをfind()のパラメータとして渡しているすべてのレストランを検索します。

mongocxx::options::find opts{};
opts.projection(make_document(kvp("grades", 0), kvp("address", 0)));
auto cursor = collection.find(make_document(kvp("name", "Emerald Pub")), opts);
for(auto&& doc : cursor) {
std::cout << bsoncxx::to_json(doc) << std::endl;
}
{ "_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 ドキュメントを参照してください。

戻る

返すドキュメントを指定する