Overview
このガイドでは、 Kotlinドライバー を使用してデータベースコマンドを実行する方法を学習できます。データベースコマンドを使用して、サーバー統計の取得、レプリカセットを初期化、集計パイプライン の実行中など、さまざまな管理および診断タスクを実行できます。
重要
データベースコマンドよりもドライバー メソッドを優先
このドライバーは、多くのデータベース コマンドのラッパー メソッドを提供します。 可能な場合は、データベースコマンドを実行する代わりにドライバー メソッドを使用することをお勧めします。
管理タスクを実行するには、 Kotlinドライバー の代わりに MongoDB Shell を使用します。データベースコマンドを発行するには、db.runCommand() シェル内で メソッドを呼び出す方法がおすすめです。これにより、 シェルとドライバー間の一貫したインターフェースが提供されます。
コマンドの実行
データベースコマンド を実行するには、コマンドとドキュメントで関連するパラメータを指定し、そのドキュメントをrunCommand() メソッドに渡します。
次のコードは、runCommand() メソッドを使用して dbStats コマンドを実行する方法を示しています。このコマンドは、指定されたMongoDBデータベースから統計を返します。
注意
この例では、接続 URI を使用してMongoDBのインスタンスに接続します。 MongoDBインスタンスへの接続の詳細については、 接続ガイドを参照してください。
import com.mongodb.MongoException import com.mongodb.kotlin.client.coroutine.MongoClient import kotlinx.coroutines.runBlocking import org.bson.BsonDocument import org.bson.BsonInt64 import org.bson.json.JsonWriterSettings fun main() = runBlocking { // Replace the uri string with your MongoDB deployment's connection string val uri = "<connection string uri>" val mongoClient = MongoClient.create(uri) val database = mongoClient.getDatabase("sample_mflix") try { val command = BsonDocument("dbStats", BsonInt64(1)) val commandResult = database.runCommand(command) println(commandResult.toJson(JsonWriterSettings.builder().indent(true).build())) } catch (me: MongoException) { System.err.println("An error occurred: $me") } mongoClient.close() }
{ "db": "sample_mflix", "collections": 5, "views": 0, "objects": 75595, "avgObjSize": 692.1003770090614, "dataSize": 52319328, "storageSize": 29831168, "numExtents": 0, "indexes": 9, "indexSize": 14430208, "fileSize": 0, "nsSizeMB": 0, "ok": 1 }
データベースコマンドと対応するパラメータの完全なリストについては、データベースコマンドガイドを参照してください。
コマンド オプション
readPreference パラメータを含めることで、runCommand() メソッドで任意のコマンド動作を指定できます。次の例は、読み込み設定 (read preference)を指定し、それをオプションとして runCommand() メソッドに渡す方法を示しています。
val command = Document("hello", 1) val commandReadPreference = Document("readPreference", "secondary") val result = database.runCommand(command, commandReadPreference)
読み込み設定(read preference)オプションの詳細については、サーバー マニュアルの読み込み設定(read preference) を参照してください。
注意
runCommand() メソッドは、databaseオブジェクトに設定した読み込み設定(読み込み設定 (read preference) )を無視します。読み込み設定 (read preference)を指定しない場合、このメソッドは primary読み込み設定 (read preference)を使用します。
応答
runCommand() メソッドは、コマンド実行後のデータベースからの応答を含む Documentオブジェクトを返します。 各データベースコマンドは異なる機能を実行するため、応答内容はコマンド間で異なる可能性があります。 ただし、すべての応答には次のフィールドを持つドキュメントが含まれます。
フィールド | 説明 |
|---|---|
<command result> | データベースコマンド に固有のフィールドを提供します。 たとえば、 |
| コマンドが成功( |
| 操作の論理時間を示します。 MongoDBは論理時間を使用して操作を順序付けます。 論理時間の詳細については、 グローバル論理クロック に関するブログ記事をご覧ください。 |
| 署名されたクラスター時間を返すドキュメントを提供します。クラスター時間は、順序操作に使用される論理時間です。 このドキュメントには、以下のフィールドが含まれています。
|
詳細情報
このガイドの概念の詳細については、次のドキュメントを参照してください。