データベースコマンドの実行
Overview
このガイドでは、 Scalaドライバーを使用してデータベースコマンド を実行する方法を学習できます。データベースコマンドを使用して、サーバー統計の取得、レプリカセットを初期化、集計パイプラインの実行中など、さまざまな管理および診断タスクを実行できます。
重要
データベースコマンドよりもドライバー メソッドを優先
このドライバーは、多くのデータベースコマンドのラッパーメソッドを提供します。可能であれば、データベースコマンドを実行する代わりにこれらのメソッドを使用することをお勧めします。
管理タスクを実行するには、 Scalaドライバーの代わりに MongoDB Shell を使用します。 シェル は、ドライバーでは使用できない可能性のあるヘルパーメソッドを提供します。
ドライバーまたはシェルに使用できるヘルパーがない場合は、このガイドで説明されている db.runCommand()
シェルメソッドまたはドライバーの runCommand()
メソッドを使用できます。
サンプル データ
このガイドの例では、 Atlasサンプルデータセット のsample_restaurants
データベースを使用します。 Scalaアプリケーションからこのデータベースにアクセスするには、AtlasMongoClient
クラスターに接続する を作成し、次の値を 変数に割り当てます。database
val database: MongoDatabase = mongoClient.getDatabase("sample_restaurants")
MongoDB Atlasクラスターを無料で作成して、サンプルデータセットをロードする方法については、 「Atlas を使い始める」ガイドを参照してください。
コマンドの実行
データベースコマンド を実行するには、コマンドを指定する Document
オブジェクトを作成し、それをパラメーターとして runCommand()
メソッドに渡します。このメソッドは SingleObservable
インスタンスを返します。このメソッドをサブスクライブしてコマンドを実行し、コマンド結果にアクセスできます。
次の例では、データベースで runCommand()
メソッドを呼び出して hello
コマンドを実行し、サーバーに関する情報を返します。
database.runCommand(Document("hello" -> 1)) .subscribe((doc: Document) => ())
Tip
データベースコマンドとそれに対応するパラメーターの完全なリストを表示するには、 MongoDB Serverマニュアルの「 データベースコマンド 」を参照してください。
読み込み設定(read preference)の設定
runCommand()
メソッドは、MongoDatabase
インスタンスに設定した読み込み設定( 読み込み設定 (read preference) )を継承しません。デフォルトでは 、runCommand()
は primary
読み込み設定( 読み込み設定 (read preference)) を使用します。
次のコードに示すように、ReadPreference
インスタンスをパラメータとして runCommand()
に渡すことで、コマンド実行の読み込み設定 (read preference)を設定できます。
database.runCommand(Document("hello" -> 1), ReadPreference.secondary()) .subscribe((doc: Document) => ())
Tip
読み込み設定( 読み込み設定 (read preference) )オプションの詳細については、 MongoDB Serverマニュアルの読み込み設定(read preference) を参照してください。
応答
runCommand()
メソッドは、指定されたコマンドに対するデータベースからの応答を含む SingleObservable
を返します。オブザーバーで subscribe()
メソッドを呼び出して コマンドを実行し、ドキュメントとして応答にアクセスできます。
未加工のコマンド応答ドキュメントには、次のフィールドが含まれています。
フィールド | 説明 |
---|---|
| データベースコマンドに固有のフィールド。 例、 |
| コマンドが成功したか( |
| 署名されたクラスター時間を含むドキュメント。クラスター時間は、操作の順序付けに使用される論理時間です。このフィールドは、レプリカセット またはシャーディングされたクラスターで実行されたコマンドにのみ適用されます。 |
| 操作実行の論理的な時間。このフィールドは、レプリカセット またはシャーディングされたクラスターで実行されたコマンドにのみ適用されます。 |
Tip
論理時間の詳細については、 Wikipedia の 論理クロック に関するエントリを参照してください。
例
次の例では、 dbStats
コマンドを実行して sample_restaurants
データベースのストレージ統計を取得し、そのコマンドの結果を出力します。
database.runCommand(Document("dbStats" -> 1)) .subscribe((doc: Document) => println(doc.toJson()), (e: Throwable) => println(s"There was an error: $e"))
このコマンドの出力には、次のコードに示すように、データベースに保存されているデータに関する情報が含まれます。
{"db": "sample_restaurants", "collections": 4, "views": 0, "objects": 18767, "avgObjSize": 596.1911866574306, "dataSize": 11188720, "storageSize": 7528448, "totalFreeStorageSize": 0, "numExtents": 0, "indexes": 6, "indexSize": 1519616, "indexFreeStorageSize": 0, "fileSize": 0, "nsSizeMB": 0, "ok": 1}
詳細情報
このガイドの概念の詳細については、 MongoDB Serverマニュアルの次のドキュメントを参照してください。
API ドキュメント
このガイドで説明したメソッドや型の詳細については、次の API ドキュメントを参照してください。