データベースコマンドの実行
Overview
このガイドでは、 MongoDB PHPライブラリを使用してデータベースコマンドを実行する方法を学習できます。 データベースコマンドを使用して、サーバー統計の取得、レプリカセットを初期化、集計パイプラインの実行中など、さまざまな管理および診断タスクを実行できます。
重要
データベース コマンドよりもライブラリ メソッドを優先
ライブラリは、多くのデータベースコマンドのラッパーメソッドを提供します。 可能な場合は、データベースコマンドを実行する代わりにこれらのメソッドを使用することをお勧めします。
管理タスクを実行するには、 MongoDB PHPライブラリではなく、 MongoDB Shellを使用します。 shellは、ライブラリでは使用できない可能性のあるヘルパーメソッドを提供します。
shelldb.runCommand()
shellライブラリまたはMongoDB\Database::command()
に使用できるヘルパーがない場合は、このガイドで説明されている {0 メソッドまたはライブラリの メソッドを使用できます。
コマンドの実行
データベースコマンドを実行するには、コマンドと コマンドドキュメントでコマンドと関連するパラメータを指定し、そのコマンドドキュメントをMongoDB\Database::command()
メソッドに渡す必要があります。 多くのデータベースコマンドは複数の結果ドキュメントを返すため、command()
メソッドは MongoDB $ Driver\Cursor 反復処理できるオブジェクト。
次のコードは、 MongoDB\Database
インスタンスでcommand()
メソッドを使用してhello
コマンドを実行する方法を示しています。これはサーバーに関する情報を返します。
$database = $client->selectDatabase('myDB'); $cursor = $database->command(['hello' => 1]);
データベースコマンドと対応するパラメータの完全なリストへのリンクを見つけるには、「追加情報 」セクションを参照してください。
注意
読み込み設定 (read preference)
command()
メソッドは、コード内の他の場所にあるDatabase
インスタンスに設定した読み込み設定 (read preference)を継承しません。 デフォルトでは 、 command()
はprimary
読み込み設定( 読み込み設定 (read preference)) を使用します。
次のコードに示すように、 オプション パラメーターに 1 つの を設定することで、コマンド実行の読み込み設定 (read preference)を設定できます。
$readPref = new MongoDB\Driver\ReadPreference('primaryPreferred'); $cursor = $database->command( ['hello' => 1], ['readPreference' => $readPref] );
PHP 拡張 API ドキュメントのReadPreference
クラスの詳細について詳しくは、 PHP拡張機能APIドキュメント を参照してください。
読み込み設定( 読み込み設定 (read preference) )オプションの詳細については、 MongoDB Serverマニュアルの読み込み設定(read preference) を参照してください。
応答
command()
メソッドは、指定されたコマンドに対するデータベースからの応答を含むCursor
オブジェクトを返します。 各データベースコマンドは異なる機能を実行するため、応答内容も異なる場合があります。
単一の 結果ドキュメントを返すコマンドの場合、その結果はカーソル内の最初でのみのドキュメントとして使用できます。 複数の結果ドキュメントを返すコマンドの場合、ライブラリは未加工のコマンド応答内のカーソル エンベロープ(カーソルIDと結果の最初のバッチするを含む)を反復可能なカーソルに変換します。
コマンドを実行する前に、コマンドの応答形式について学習してください。これにより、アプリケーションは複数の結果を反復処理するか、カーソル内の最初の 件のドキュメントのみを抽出します。 データベースコマンドの完全なリストへのリンクを見つけるには、このガイドの「追加情報」セクションを参照してください。
未加工のコマンド応答には次のフィールドが含まれています。
フィールド | 説明 |
---|---|
<command result> | データベースコマンドに固有のフィールド。 例、 count コマンドはn フィールドを返します。 |
ok | |
operationTime | 操作の論理的な時間。 MongoDBは論理時間を使用して操作を順序付けます。 この概念の詳細については、グローバル ロジック クロック に関するブログ記事をご覧ください。 |
$clusterTime | 署名されたクラスター時間を含むドキュメント。 クラスター時間は、操作の順序付けに使用される論理時間です。 |
コマンドの例
次の例では、 command()
メソッドを使用してdbStats
コマンドを実行し、 accounts
データベースのストレージ統計を取得します。
$database = $client->accounts; $command = ['dbStats' => 1]; // dbStats returns a single document $cursor = $database->command($command); // Print the first document in the cursor echo json_encode($cursor->toArray()[0]), PHP_EOL;
このコマンドの出力には、データベースのコレクションに関する情報が含まれ、コレクション全体に保存されるデータの量とサイズが記述されます。
{"db":"accounts","collections":2,"views":0,"objects":5,"avgObjSize":22,"dataSize":110, "storageSize":40960,"totalFreeStorageSize":0,"numExtents":0,"indexes":2,"indexSize":40960, "indexFreeStorageSize":0,"fileSize":0,"nsSizeMB":0,"ok":1}
詳細情報
このガイドの概念の詳細については、 MongoDB Serverマニュアルの次のドキュメントを参照してください。
API ドキュメント
command()
メソッドの詳細については、次のMongoDB PHPライブラリAPIドキュメントを参照してください。