コマンドの実行
Overview
このガイドでは、Node.js ドライバーを使用してデータベースコマンドを実行する方法を学習できます。 データベースコマンドを使用して、サーバー統計の取得、レプリカセットの初期化、集計パイプラインの実行など、さまざまな管理および診断タスクを実行できます。
重要
データベースコマンドよりもドライバー メソッドを優先
このドライバーは、多くのデータベース コマンドのラッパー メソッドを提供します。 可能な場合は、データベースコマンドを実行する代わりにドライバー メソッドを使用することをお勧めします。
管理タスクを実行するには、 Node.jsドライバーの代わりにMongoDB Shellを使用します。 データベースコマンドを発行するには、 db.runCommand()
内で {3shellshell メソッドを呼び出す方法がおすすめです。これにより、 とドライバー間の一貫したインターフェースが提供されます。
コマンドの実行
データベースコマンドを実行するには、コマンドとコマンド ドキュメントでコマンドと関連するパラメーターを指定し、そのコマンド ドキュメントを コマンド実行メソッドに渡す必要があります。 Node.js ドライバーは、データベース コマンドを実行するための次のメソッドを提供します。
command()
は、コマンドの応答をDocument
タイプとして返します。 このメソッドは任意のデータベースコマンドで使用できます。runCursorCommand()
は、コマンド応答を反復可能なRunCommandCursor
タイプとして返します。 このメソッドは、データベースコマンドが複数の結果ドキュメントを返す場合にのみ使用できます。
次のコードは、 command()
メソッドを使用してデータベース上でレプリカセット内の現在のノードのロールに関する情報を返すhello
コマンドを実行する方法を示しています。
const result = await myDB.command({ hello: 1 });
データベースコマンドと対応するパラメータの完全なリストについては、「追加情報 」セクションを参照してください。
注意
読み込み設定 (read preference)
command()
とrunCursorCommand()
は、コード内の他の場所にあるDb
オブジェクトに設定した読み取り設定に従いません。 これらのメソッドはデフォルトでprimary
の読み込み設定(read preference)を使用します。
オプション オブジェクトをいずれかのメソッドに渡すことで、コマンド実行の読み込み設定(read preference)を設定できます。 command()
メソッドはRunCommandOptions
オブジェクトを受け取り、 runCursorCommand()
メソッドはRunCursorCommandOptions
オブジェクトを受け取ります。
次のコードは、読み込み設定(read preference)を指定し、それをオプションとしてcommand()
メソッドに渡す方法を示しています。
const commandOptions = { readPreference: "nearest" }; const result = await myDB.command(commandDoc, commandOptions);
読み込み設定(read preference)オプションの詳細については、サーバー マニュアルの読み込み設定(read preference) を参照してください。
応答
各メソッドは、コマンドの実行後にデータベースからの応答を含むDocument
オブジェクトまたはカーソルを返します。 各データベースコマンドは異なる機能を実行するため、応答内容はコマンド間で異なる可能性があります。 ただし、すべての応答には次のフィールドを持つドキュメントが含まれます。
フィールド | 説明 |
---|---|
<command result> | データベースコマンド に固有のフィールドを提供します。 たとえば、 count はn フィールドを返し、 explain はqueryPlanner フィールドを返します。 |
ok | コマンドが成功( 1 )したか失敗(0 )したかを示します。 |
operationTime | 操作の論理的な時間を示します。 MongoDB は論理時間を使用して操作を順序付けます。 |
$clusterTime | 署名されたクラスター時間を返すドキュメントを提供します。 クラスター時間は、操作の順序付けに使用される論理時間です。 このドキュメントには、以下のフィールドが含まれています。
|
例
次のコードは、 runCursorCommand()
メソッドを使用してtestDB
データベースでcheckMetadataConsistency
コマンドを実行し、結果を反復処理する方法を示しています。
const db = client.db("testDB"); const cursor = await db.runCursorCommand({ checkMetadataConsistency: 1, }); for await (const doc of cursor) { console.log(doc); }
出力
出力には、カーソル オブジェクトの内容が含まれます。 ドキュメントは、データベース内のメタデータの不整合を説明します。
{ type: ..., description: ..., details: { namespace: ..., info: ... } } { type: ..., description: ..., details: { namespace: ..., collectionUUID: ..., maxKeyObj: ..., ... } }
注意
コマンドの応答をカーソルに保存すると、カーソルの内容にアクセスするときにコマンドの結果ドキュメントのみが表示されます。 ok
、 operationTime
、 $clusterTime
フィールドは表示されません。
詳細情報
このガイドの概念の詳細については、次のドキュメントを参照してください。
カーソルからデータを取得する方法については、 カーソルからデータにアクセスする の基礎ページを参照してください。