Overview
このガイドでは、 Kotlin Syncドライバーを使用してデータベースコマンドを実行する方法を学習できます。データベースコマンドを使用して、サーバー統計の取得、レプリカセットを初期化、集計パイプラインの実行中など、さまざまな管理および診断タスクを実行できます。
重要
データベースコマンドよりもドライバー メソッドを優先
このドライバーは、多くのデータベース コマンドのラッパー メソッドを提供します。 可能な場合は、データベースコマンドを実行する代わりにドライバー メソッドを使用することをお勧めします。
管理タスクを実行するには、 Kotlin Syncドライバー の代わりに MongoDB Shell を使用します。データベースコマンドを発行するには、 シェル内で db.runCommand()
メソッドを呼び出す方法がおすすめです。これにより、 シェルとドライバー間の一貫したインターフェースが提供されます。
コマンドの実行
データベースコマンド を実行するには、コマンドとドキュメントで関連するパラメータを指定し、そのドキュメントをrunCommand()
メソッドに渡します。
次のコードは、runCommand()
メソッドを使用して explain
コマンドを実行する方法を示しています。このコマンドを呼び出すと、find
コマンドの実行方法に関する説明が返されます。
val commandToExplain = Document("find", "restaurants") val explanation = database.runCommand(Document("explain", commandToExplain))
データベースコマンドと対応するパラメータの完全なリストについては、データベースコマンドガイドを参照してください。
コマンド オプション
readPreference
パラメータを含めることで、runCommand()
メソッドで任意のコマンド動作を指定できます。次の例は、読み込み設定 (read preference)を指定し、それをオプションとして runCommand()
メソッドに渡す方法を示しています。
val command = Document("hello", 1) val commandReadPreference = Document("readPreference", "secondary") val commandResult = database.runCommand(command, commandReadPreference)
読み込み設定(read preference)オプションの詳細については、サーバー マニュアルの読み込み設定(read preference) を参照してください。
注意
runCommand()
メソッドは、database
オブジェクトに設定した読み込み設定(読み込み設定 (read preference) )を無視します。読み込み設定 (read preference)が指定されていない場合、このメソッドは primary
読み込み設定 (read preference)を使用します。
応答
runCommand()
メソッドは、コマンド実行後のデータベースからの応答を含む Document
オブジェクトを返します。 各データベースコマンドは異なる機能を実行するため、応答内容はコマンド間で異なる可能性があります。 ただし、すべての応答には次のフィールドを持つドキュメントが含まれます。
フィールド | 説明 |
---|---|
<command result> | データベースコマンド に固有のフィールドを提供します。 たとえば、 |
| コマンドが成功( |
| 操作の論理時間を示します。 MongoDBは論理時間を使用して操作を順序付けます。 論理時間の詳細については、 グローバル論理クロック に関するブログ記事をご覧ください。 |
| 署名されたクラスター時間を返すドキュメントを提供します。 クラスター時間は、操作の順序付けに使用される論理時間です。 このドキュメントには、以下のフィールドが含まれています。
|
例
次の例は、buildInfo
コマンドの実行方法と、それによって生成される出力を示しています。
import com.mongodb.MongoException import com.mongodb.kotlin.client.MongoClient import org.bson.Document import org.bson.BsonInt64 import org.bson.json.JsonWriterSettings fun main() { // Replace the placeholder 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 = Document("buildInfo", 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() }
{ version: '8.0.4', ...<other command results>... ok: 1, '$clusterTime': { clusterTime: Timestamp({ ... }), signature: { ... } }, operationTime: Timestamp({ ... }) }
詳細情報
このガイドの概念の詳細については、次のドキュメントを参照してください。