Docs Menu
Docs Home
/ / /
Node.js ドライバー
/

コマンドの実行

項目一覧

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

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

重要

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

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

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

データベースコマンドを実行するには、ドキュメント内でコマンドと関連するパラメータを指定し、このドキュメントを コマンド実行メソッドに渡す必要があります。 Node.js ドライバーは、データベース コマンドを実行するための次のメソッドを提供します。

  • command()は、コマンドの応答をDocumentタイプとして返します。 このメソッドは任意のデータベースコマンドで使用できます。

  • runCursorCommand()は、コマンド応答を反復可能なRunCommandCursorタイプとして返します。 このメソッドは、データベースコマンドが複数の結果ドキュメントを返す場合にのみ使用できます。

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

const result = await myDB.command({ hello: 1 });

データベースコマンドと対応するパラメータの完全なリストについては、「追加情報 」セクションを参照してください。

command()runCursorCommand()メソッドと メソッドで任意のコマンド動作を指定できます。

command() メソッドは RunCommandOptionsオブジェクトを受け入れます。RunCommandOptions型の詳細については、 APIドキュメントを参照してください。

runCursorCommand() methodRunCursorCommandOptionsオブジェクトを受け入れます。 RunCursorCommandOptions型の詳細については、 API ドキュメントを参照してください。

Node.js ドライバーのバージョン 6.0 以降では、次のオプションのみをcommand()メソッドに渡すことができます。

  • comment

  • enableUtf8Validation

  • raw

  • readPreference

  • session

command()メソッドに渡すドキュメントで、さらにオプションを設定できます。 コマンドと、それが受け入れるオプションの詳細については、コマンドを見つけ、サーバー マニュアルの「データベースコマンド」セクションのリンクに従ってください。

次のコードは、 majority書込み保証(write concern)で実行されるgrantRolesToUserコマンドを指定する方法を示しています。

const commandDoc = {
grantRolesToUser: "user011",
roles: [ "readWrite" ],
writeConcern: { w: "majority" }
};
const result = await myDB.command(commandDoc);

注意

読み込み設定 (read preference)

command()メソッドとrunCursorCommand()メソッドは、 Dbオブジェクトに設定した読み込み設定(read preference)を無視します。 これらのメソッドはデフォルトでprimaryの読み込み設定(read preference)を使用します。

次のコードは、読み込み設定(read preference)を指定し、それをオプションとしてcommand()メソッドに渡す方法を示しています。

const commandOptions = { readPreference: "nearest" };
const result = await myDB.command(commandDoc, commandOptions);

読み込み設定(read preference)オプションの詳細については、サーバー マニュアルの読み込み設定(read preference) を参照してください。

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

フィールド
説明
<command result>
データベースコマンド に固有のフィールドを提供します。 たとえば、 countnフィールドを返し、 explainqueryPlannerフィールドを返します。
ok
コマンドが成功(1)したか失敗(0)したかを示します。
operationTime

操作の論理的な時間を示します。 MongoDB は論理時間を使用して操作を順序付けます。

Tip

以下も参照してください。

$clusterTime

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

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

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

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

次のコードは、 runCursorCommand()メソッドを使用してtestDBデータベースでcheckMetadataConsistencyコマンドを実行し、結果を反復処理する方法を示しています。

// Connect to the "testDB" database
const db = client.db("testDB");
// Run a cursor command to check metadata consistency within the database
const cursor = await db.runCursorCommand({
checkMetadataConsistency: 1,
});
// Iterate through the cursor's results and print the contents
for await (const doc of cursor) {
console.log(doc);
}

出力には、カーソル オブジェクトの内容が含まれます。 ドキュメントは、データベース内のメタデータの不整合を説明します。

{
type: ...,
description: ...,
details: {
namespace: ...,
info: ...
}
}
{
type: ...,
description: ...,
details: {
namespace: ...,
collectionUUID: ...,
maxKeyObj: ...,
...
}
}

注意

コマンドの応答をカーソルに保存すると、カーソルの内容にアクセスするときにコマンドの結果ドキュメントのみが表示されます。 okoperationTime$clusterTimeフィールドは表示されません。

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

カーソルからデータを取得する方法については、 カーソルからデータにアクセスする の基礎ページを参照してください。

戻る

トランザクション