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

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

項目一覧

  • Overview
  • サンプル データ
  • Limit
  • Sort
  • スキップ
  • 制限、ソート、スキップの組み合わせ
  • 詳細情報
  • API ドキュメント

このガイドでは、次のメソッドを使用して、読み取り操作から返されるドキュメントを指定する方法を学習できます。

  • mongocx::options::find::limit() : クエリから返されるドキュメントの最大数を指定します。

  • mongocx::options::find::sort() : 返されるドキュメントのソート順序を指定します。

  • mongocx::options::find::skip() : クエリ結果を返す前にスキップするドキュメントの数を指定します。

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

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

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

読み取り操作から返されるドキュメントの最大数を指定するには、 mongocxx::options::findクラスのインスタンスを作成し、そのlimitフィールドを 設定します。 次に、 mongocxx::options::findインスタンスをfind()メソッドの引数として渡します。

次の例では、 cuisineフィールドの値が"Italian"であるすべてのレストランを検索し、結果を5ドキュメントに制限します。

mongocxx::options::find opts{};
opts.limit(5);
auto cursor = collection.find(make_document(kvp("cuisine", "Italian")), opts);
for(auto&& doc : cursor) {
std::cout << bsoncxx::to_json(doc) << std::endl;
}
{ "_id" : { "$oid" : "..." }, ..., "name" : "Philadelphia Grille Express", "restaurant_id" : "40364305" }
{ "_id" : { "$oid" : "..." }, ..., "name" : "Isle Of Capri Restaurant", "restaurant_id" : "40364373" }
{ "_id" : { "$oid" : "..." }, ..., "name" : "Marchis Restaurant", "restaurant_id" : "40364668" }
{ "_id" : { "$oid" : "..." }, ..., "name" : "Crystal Room", "restaurant_id" : "40365013" }
{ "_id" : { "$oid" : "..." }, ..., "name" : "Forlinis Restaurant", "restaurant_id" : "40365098" }

Tip

上記の例では、データベース内の自然な順序に従ってクエリに一致する最初の 5 つのドキュメントが返されます。 次のセクションでは、指定された順序でドキュメントを返す方法について説明します。

指定された順序でドキュメントを返すには、結果を並べ替えるフィールドと並べ替え方向を含むドキュメントを作成します。 1の値は最低から最高の順にソートされ、 -1の値は最高から最低の順にソートされます。 次に、 mongocxx::options::findインスタンスでmongocxx::options::find::sort()メソッドを呼び出し、このドキュメントを引数として渡します。

次の例では、 cuisine値が"Italian"であるすべてのドキュメントを、 nameフィールド値の昇順でソートして返します。

mongocxx::options::find opts{};
opts.sort(make_document(kvp("name", 1)));
auto cursor = collection.find(make_document(kvp("cuisine", "Italian")), opts);
for(auto&& doc : cursor) {
std::cout << bsoncxx::to_json(doc) << std::endl;
}
{ "_id" : { "$oid" : "..." }, ..., "name" : "(Lewis Drug Store) Locanda Vini E Olii", "restaurant_id" : "40804423" }
{ "_id" : { "$oid" : "..." }, ..., "name" : "101 Restaurant And Bar", "restaurant_id" : "40560108" }
{ "_id" : { "$oid" : "..." }, ..., "name" : "44 Sw Ristorante & Bar", "restaurant_id" : "40698807" }
...
{ "_id" : { "$oid" : "..." }, ..., "name" : "Zucchero E Pomodori", "restaurant_id" : "41189590" }

クエリ結果を返す前に指定した数のドキュメントをスキップするには、 mongocxx::options::findクラスのインスタンスを作成し、そのskipフィールドを 設定します。 次に、 mongocxx::options::findインスタンスをfind()メソッドの引数として渡します。

次の例では、 boroughフィールドの値が"Manhattan"であるすべてのドキュメントを返し、最初の10ドキュメントをスキップします。

mongocxx::options::find opts{};
opts.skip(10);
auto cursor = collection.find(make_document(kvp("borough", "Manhattan")), opts);
for(auto&& doc : cursor) {
std::cout << bsoncxx::to_json(doc) << std::endl;
}
{ "_id" : { "$oid" : "..." }, ..., "name" : "Cafe Metro", "restaurant_id" : "40363298" }
{ "_id" : { "$oid" : "..." }, ..., "name" : "Lexler Deli", "restaurant_id" : "40363426" }
{ "_id" : { "$oid" : "..." }, ..., "name" : "Domino'S Pizza", "restaurant_id" : "40363644" }
...

単一のmongocxx::options::findインスタンスのlimitsort 、およびskipフィールドを設定できます。 これにより、返されるソートされたドキュメントの最大数を設定して、返される前に指定された数のドキュメントをスキップできます。

次の例では、 cuisineの値が"Italian"である5ドキュメントが返されます。 結果はnameフィールド値の昇順でソートされ、最初の10ドキュメントはスキップされます。

mongocxx::options::find opts{};
opts.sort(make_document(kvp("name", 1))).limit(5).skip(10);
auto cursor = collection.find(make_document(kvp("cuisine", "Italian")), opts);
for(auto&& doc : cursor) {
std::cout << bsoncxx::to_json(doc) << std::endl;
}
{ "_id" : { "$oid" : "..." }, ..., "name" : "Acqua", "restaurant_id" : "40871070" }
{ "_id" : { "$oid" : "..." }, ..., "name" : "Acqua Restaurant", "restaurant_id" : "41591488" }
{ "_id" : { "$oid" : "..." }, ..., "name" : "Acqua Santa", "restaurant_id" : "40735858" }
{ "_id" : { "$oid" : "..." }, ..., "name" : "Acquista Trattoria", "restaurant_id" : "40813992" }
{ "_id" : { "$oid" : "..." }, ..., "name" : "Acquolina Catering", "restaurant_id" : "41381423" }

注意

これらのメソッドを呼び出す順序によって、返されるドキュメントは変更されません。 ドライバーは、最初にソート操作、次にスキップ操作、次に制限操作を実行して、呼び出しの順序を自動的に並べ替えます。

ドキュメント取得の詳細については、 データ取得ガイドを 参照してください。

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

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

戻る

クエリを指定する