Docs Menu
Docs Home
/ / /
C#/.NET
/ /

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

項目一覧

  • Overview
  • サンプル データ
  • コマンドの実行
  • 読み込み設定(read preference)の設定
  • 応答
  • 詳細情報
  • API ドキュメント

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

重要

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

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

管理タスクを実行するには、 .NET/ C#ドライバーの代わりに MongoDB Shell を使用します。 シェルは、ドライバーでは使用できない可能性のあるヘルパーメソッドを提供します。

ドライバーまたはシェルに使用できるヘルパーがない場合は、このガイドで説明されている db.runCommand() シェルメソッドまたはドライバーの RunCommand() メソッドと RunCommandAsync() メソッドを使用できます。

このガイドの例では、 Atlasサンプルデータセットsample_restaurants.restaurantsコレクションを使用します。 無料のMongoDB Atlasクラスターを作成し、サンプルデータセットをロードする方法については、 クイック スタートを参照してください。

データベースコマンドを実行するには、コマンドを指定する BsonDocumentオブジェクトを作成し、それをパラメーターとして RunCommand() メソッドまたは RunCommandAsync() メソッドに渡します。型パラメーターを指定することで、これらのメソッドによって返される型を指定できます。コマンドの応答を返すには、BsonDocument 型を使用します。また、独自の 厳密に型指定されたクラスを指定して、コマンドの応答を逆直列化することもできます。

次の例では、データベースに対して hello コマンドを実行し、サーバーに関する情報を返します。対応するコードを表示するには、Asynchronous タブまたは Synchronousタブを選択します。

var command = new BsonDocument("hello", 1);
var result = await database.RunCommandAsync<BsonDocument>(command);
var command = new BsonDocument("hello", 1);
var result = database.RunCommand<BsonDocument>(command);

Tip

データベースコマンドとそれに対応するパラメーターの完全なリストを表示するには、 MongoDB Serverマニュアルの「 データベースコマンド 」を参照してください。

RunCommand() メソッドは、MongoDatabaseインスタンスに設定した読み込み設定( 読み込み設定 (read preference) )を継承しません。デフォルトでは 、RunCommand()primary 読み込み設定( 読み込み設定 (read preference)) を使用します。

次の例に示すように、ReadPreferenceインスタンスをパラメータとして RunCommand() に渡すことで、コマンド実行の読み込み設定 (read preference)を設定できます。対応するコードを表示するには、Asynchronous タブまたは Synchronousタブを選択します。

var command = new BsonDocument("hello", 1);
var result = await database.RunCommandAsync<BsonDocument>(command, ReadPreference.Secondary);
var command = new BsonDocument("hello", 1);
var result = database.RunCommand<BsonDocument>(command, ReadPreference.Secondary);

Tip

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

RunCommand() メソッドによって返される未加工のコマンド応答ドキュメントには、次のフィールドが含まれています。

フィールド
説明

<command result>

データベースコマンドに固有のフィールド。 例、 helloコマンドはtopologyVersionフィールドを返します。

ok

コマンドが成功したか(1.0)失敗したか(0.0)を示します。 ok の値が 0.0 の場合、ドライバーは MongoCommandException を発生させます。

$clusterTime

署名されたクラスター時間を含むドキュメント。クラスター時間は、操作の順序付けに使用される論理時間です。このフィールドは、レプリカセットまたはシャーディングされたクラスターで実行されたコマンドにのみ適用されます。

operationTime

操作実行の論理的な時間。このフィールドは、レプリカセットまたはシャーディングされたクラスターで実行されたコマンドにのみ適用されます。

次の例では、dbStats コマンドを実行して sample_restaurantsデータベースのストレージ統計を取得し、返された BsonDocumentオブジェクトで ToJson() メソッドを使用してコマンドの結果を出力します。対応するコードを表示するには、Asynchronous タブまたは Synchronousタブを選択します。

var command = new BsonDocument("dbStats", 1);
var result = await database.RunCommandAsync<BsonDocument>(command);
Console.WriteLine(result.ToJson());
var command = new BsonDocument("dbStats", 1);
var result = database.RunCommand<BsonDocument>(command);
Console.WriteLine(result.ToJson());

このコマンドの出力には、前の例の結果に示されているように、データベースに保存されているデータに関する情報が含まれます。

{ "db" : "sample_restaurants", "collections" : 2, "views" : 0, "objects" :
NumberLong(25438), "avgObjSize" : 548.95172576460413, "dataSize" : NumberLong(13964234),
"storageSize" : NumberLong(8056832), "totalFreeStorageSize" : NumberLong(0),
"numExtents" : NumberLong(0), "indexes" : 2, "indexSize" : NumberLong(1044480),
"indexFreeStorageSize" : NumberLong(0), "fileSize" : NumberLong(0), "nsSizeMB" : 0, "ok" : 1 }

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

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

戻る

データベースとコレクション