Docs Menu
Docs Home
/ /

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

このガイドでは、 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>

データベースコマンド に固有のフィールドを提供します。 たとえば、 countnフィールドを返し、 explainqueryPlannerフィールドを返します。

ok

コマンドが成功(1)したか失敗(0)したかを示します。

operationTime

操作の論理時間を示します。 MongoDBは論理時間を使用して操作を順序付けます。 論理時間の詳細については、 グローバル論理クロック に関するブログ記事をご覧ください。

$clusterTime

署名されたクラスター時間を返すドキュメントを提供します。クラスター時間は、順序操作に使用される論理時間です。

このドキュメントには、以下のフィールドが含まれています。

  • clusterTime: ノードの最も高い既知のクラスター時間のタイムスタンプ

  • signature: クラスター時間のハッシュと、クラスター時間に署名するために使用されるキーのIDを含むドキュメント

このガイドの概念の詳細については、次のドキュメントを参照してください。

戻る

Indexes

項目一覧