コマンドの実行
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> | データベースコマンド に固有のフィールドを提供します。 たとえば、 |
| コマンドが成功( |
| 操作の論理的な時間を示します。 MongoDB は論理時間を使用して操作を順序付けます。 |
| 署名されたクラスター時間を返すドキュメントを提供します。 クラスター時間は、操作の順序付けに使用される論理時間です。 このドキュメントには、以下のフィールドが含まれています。
|
詳細情報
このガイドの概念の詳細については、次のドキュメントを参照してください。
このガイドでは説明されているメソッドまたはタイプの詳細については、次のAPIドキュメントを参照してください。