AI エージェント向け: ドキュメントインデックスは https://www.mongodb.com/ja-jp/docs/llms.txt で利用できます。すべてのページの markdown バージョンは、いずれかの URL パスに .md を追加することで利用できます。
Docs Menu

データベースコマンドの実行

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

重要

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

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

To perform administrative tasks, use the MongoDB Shell instead of the Node.js driver. Calling the db.runCommand() method inside the shell is the preferred method to issue database commands, as it provides a consistent interface between the shell and drivers.

データベースコマンドを実行するには、ドキュメント内でコマンドと関連するパラメータを指定し、このドキュメントを コマンド実行メソッドに渡す必要があります。 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 は論理時間を使用して操作を順序付けます。論理時間の詳細については、弊社のグローバル論理クロックに関するブログ記事をご覧ください。

$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フィールドは表示されません。

注意

セットアップ例

この例では、接続 URI を使用してMongoDBのインスタンスに接続します。MongoDBインスタンスへの接続の詳細については、MongoDBへの接続ガイドを参照してください。この例では、Atlasサンプルデータセットに含まれる sample_mflixデータベースの moviesコレクションも使用します。MongoDB の使用開始に従って、 MongoDB Atlasの無料階層のデータベースにロードできます。

注意

Typescript固有の機能はありません

次のコード例ではJavaScriptを使用します。このユースケースに関連するドライバーのTypescript固有の機能はありません。

次のサンプルコードでは、dbStats コマンドを送信して、sample_mflixデータベースから統計をリクエスト。

1/* Run a database command */
2
3import { MongoClient } from "mongodb";
4
5// Replace the uri string with your MongoDB deployment's connection string
6const uri = "<connection string uri>";
7
8const client = new MongoClient(uri);
9
10async function run() {
11 try {
12 // Get the "sample_mflix" database
13 const db = client.db("sample_mflix");
14
15 // Find and print the storage statistics for the "sample_mflix" database using the 'dbStats' command
16 const result = await db.command({
17 dbStats: 1,
18 });
19 console.log(result);
20 } finally {
21 // Close the database connection on completion or error
22 await client.close();
23 }
24}
25run().catch(console.dir);

上記のコマンドを実行すると、次の出力が生成されます。

{
db: 'sample_mflix',
collections: 6,
views: 0,
objects: 75620,
..

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

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