Docs Menu
Docs Home
/ / /
Scala
/

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

項目一覧

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

このガイドでは、 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マニュアルの「 データベースコマンド 」を参照してください。

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() メソッドを呼び出して コマンドを実行し、ドキュメントとして応答にアクセスできます。

未加工のコマンド応答ドキュメントには、次のフィールドが含まれています。

フィールド
説明

<command result>

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

ok

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

$clusterTime

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

operationTime

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

次の例では、 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 ドキュメントを参照してください。

戻る

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