Overview
このガイドでは、 Rubyドライバーを使用してデータベースコマンドを実行する方法を学習できます。データベースコマンドを使用して、サーバー統計の取得、レプリカセットを初期化、集計パイプラインの実行中など、さまざまな管理および診断タスクを実行できます。
重要
データベースコマンドよりもドライバー メソッドを優先
このドライバーは、多くのデータベースコマンドのラッパーメソッドを提供します。 可能であれば、データベースコマンドを実行する代わりにこれらのメソッドを使用することをお勧めします。
管理タスクを実行するには、 Rubyドライバーの代わりに MongoDB Shell を使用します。シェル は、ドライバーでは使用できない可能性のあるヘルパーメソッドを提供します。
ドライバーまたはシェルに使用できるヘルパーがない場合は、このガイドで説明されている db.runCommand()
シェルメソッドまたはドライバーの command
メソッドを使用できます。
サンプル データ
このガイドの例では、Atlasサンプルデータセット の sample_restaurants
データベースを使用します。Rubyアプリケーションからこのデータベースにアクセスするには、Atlas クラスターに接続する Mongo::Client
オブジェクトを作成し、次の値を database
変数に割り当てます。
database = client.use('sample_restaurants')
MongoDB Atlasクラスターを無料で作成して、サンプルデータセットをロードする方法については、 「Atlas を使い始める」ガイドを参照してください。
コマンドの実行
データベースコマンド を実行するには、Mongo::Database
インスタンスの command
インスタンスメソッドを実行し、実行する操作の名前をパラメーターとして渡します。
次の例では、command
メソッドを呼び出して hello
コマンドを実行し、サーバーに関する情報を返します。
client.database.command(hello: 1)
Tip
データベースコマンドとそれに対応するパラメーターの完全なリストを表示するには、 MongoDB Serverマニュアルの「 データベースコマンド 」を参照してください。
読み込み設定(read preference)の設定
command
メソッドは、Database
インスタンスに設定した読み込み設定 (read preference)を継承しません。 デフォルトでは 、command
は primary
読み込み設定 (read preference)を使用します。
次のコードに示すように、:read
オプションを command
メソッドに渡すことで、コマンド実行の読み込み設定 (read preference)を設定できます。
client.database.command({hello: 1}, read: {mode: :secondary})
Tip
読み込み設定( 読み込み設定 (read preference) )オプションの詳細については、 MongoDB Serverマニュアルの読み込み設定(read preference) を参照してください。
応答
command
メソッドは、指定されたコマンドに対するデータベースからの応答を含む Mongo::Operation::Result
を返します。
次の方法を使用して、未加工のコマンド応答ドキュメントのフィールドにアクセスできます。
方式 | 説明 |
---|---|
| サーバーがコマンドを確認した場合は |
| コマンドの応答の書式設定された string 表現を返します。 |
| コマンドが成功した場合は |
| サーバー応答で報告されたクラスター時間を返します。クラスター時間は、操作の順序付けに使用される論理時間です。このフィールドは、レプリカセット またはシャーディングされたクラスターで実行されたコマンドにのみ適用されます。 |
| 操作実行の論理時間を返します。 |
Result
オブジェクトで使用できるメソッドの完全なリストについては、APIドキュメントを参照してください。
Tip
論理時間の詳細については、 Wikipedia の 論理クロック に関するエントリを参照してください。
例
次の例では、dbStats
コマンドを実行して sample_restaurants
データベースのストレージ統計を取得し、inspect
メソッドを使用してコマンドの結果を出力します。
puts client.database.command({dbStats: 1}).first
このコマンドの出力には、次のコードに示すように、データベースに保存されているデータに関する情報が含まれます。
{"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 ドキュメントを参照してください。