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

コマンドの実行

項目一覧

  • Overview
  • コマンドの実行
  • コマンド オプション
  • 応答
  • 詳細情報

このガイドでは、 C++ドライバーを使用してデータベースコマンドを実行する方法を学習できます。データベースコマンドを使用して、サーバー統計の取得、レプリカセットを初期化、集計パイプラインの実行中など、さまざまな管理および診断タスクを実行できます。

重要

データベースコマンドよりもドライバー メソッドを優先

このドライバーは、多くのデータベース コマンドのラッパー メソッドを提供します。 可能な場合は、データベースコマンドを実行する代わりにドライバー メソッドを使用することをお勧めします。

管理タスクを実行するには、 C++ドライバーの代わりに MongoDB Shell を使用します。db.runCommand() シェル内で メソッドを呼び出す方法は、 シェルとドライバー間の一貫したインターフェースを提供するため、データベースコマンドを発行するための推奨される方法です。

データベースコマンドを実行するには、mongocxx::databaseインスタンスで run_command() 実行メソッドを呼び出し、コマンドと関連する引数を指定するドキュメントを渡します。メソッドは、コマンドの結果を bsoncxx::document::valueオブジェクトとして返します。

run_command()任意のデータベースコマンドで メソッドを使用できます。データベースコマンドと対応するパラメータの完全なリストについては、 MongoDB Serverマニュアルの「 データベースコマンド 」を参照してください。

次の例は、run_command() メソッドを使用してデータベースで hello コマンドを実行する方法を示しています。これにより、レプリカセット内の現在のノードのロールに関する情報が返されます。

auto db = client["my_database"];
auto command = make_document(kvp("hello" , 1));
auto result = db.run_command(command.view());
std::cout << bsoncxx::to_json(result) << std::endl;
{
"topologyVersion" : {
"processId" : ...,
"counter" : ...
},
"hosts" : [ ... ],
"setName" : ...,
"setVersion" : ...,
"isWritablePrimary" : ...,
"secondary" : ...,
"primary" : ...,
"tags" : {
"region" : ...,
"availabilityZone" : ...,
"provider" : ...,
"workloadType" : ...,
"nodeType" : ...,
"diskState" : ...
},
"me" : ...,
"electionId" : ...,
"lastWrite" : ...,
"lastWriteDate" : ...,
"majorityOpTime" : ...,
"majorityWriteDate" : ...,
"maxBsonObjectSize" : ...,
"maxMessageSizeBytes" : ...,
"maxWriteBatchSize" : ...,
"localTime" : ...,
"logicalSessionTimeoutMinutes" : ...,
"connectionId" : ...,
"minWireVersion" : ...,
"maxWireVersion" : ...,
"readOnly" : ...,
"ok" : ...,
"$clusterTime" : ...,
"signature" : ...
}

コマンドの実行動作をカスタマイズするには、run_command() メソッドに渡すコマンドドキュメントでオプションを設定します。コマンドと、それが受け入れるオプションの詳細については、コマンドを見つけ、対応するリンクに従ってMongoDB Serverマニュアルの データベースコマンド ページの を実行します。

例、コマンドドキュメントで showPrivileges オプションを true に設定することで、connectionStatus コマンドに現在認証されているユーザーが所有する権限の完全なセットを返すように指示できます。

auto db = client["my_database"];
auto command = make_document(kvp("connectionStatus" , 1), kvp("showPrivileges", true));
auto result = db.run_command(command.view());
std::cout << bsoncxx::to_json(result) << std::endl;
{
"authInfo" : { "authenticatedUsers" : [ { "user" : ..., "db" : ... } ],
"authenticatedUserRoles" : [ { "role" : ..., "db" : ... } ],
"authenticatedUserPrivileges" : [
{ "resource" : { "db" : "", "collection" : "" }, "actions" : [ ... ] },
{ "resource" : { "db" : "config", "collection" : "system.sessions" }, "actions" : [ ... ] },
...,
{ "resource" : { "db" : "", "collection" : "" }, "actions" : [ ... ] }
]
},
"ok" : 1
}

run_command() メソッドは、コマンド実行後のデータベースからの応答を含む bsoncxx::document::valueオブジェクトを返します。各データベースコマンドは異なる機能を実行するため、応答内容はコマンド間で異なる可能性があります。ただし、すべての応答には次のフィールドを持つドキュメントが含まれます。

フィールド
説明
<command result>
データベースコマンド に固有のフィールドを提供します。 たとえば、 countnフィールドを返し、 explainqueryPlannerフィールドを返します。
ok
コマンドが成功(1)したか失敗(0)したかを示します。
operationTime
操作の論理的な時間を示します。 MongoDB は論理時間を使用して操作を順序付けます。
$clusterTime

署名されたクラスター時間を返すドキュメントを提供します。 クラスター時間は、操作の順序付けに使用される論理時間です。

このドキュメントには、以下のフィールドが含まれています。

  • clusterTimeは、ノードの最も高い既知のクラスター時間のタイムスタンプです。

  • signatureこれは、クラスター時間のハッシュと、クラスター時間に署名するために使用されるキーの ID を含むドキュメントです。

このガイドの概念の詳細については、次のドキュメントを参照してください。

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

戻る

集計