Docs Menu
Docs Home
/ /

Ejecute un comando de base de datos

En esta guía, aprenderá a ejecutar un comando de base de datos con el controlador Kotlin. Puede usar comandos de base de datos para realizar diversas tareas administrativas y de diagnóstico, como obtener estadísticas del servidor, inicializar un conjunto de réplicas o ejecutar una canalización de agregación.

Importante

Prefiera los métodos del controlador a los comandos de base de datos

El controlador proporciona métodos de encapsulamiento para numerosos comandos de base de datos. Recomendamos usar métodos de controlador en lugar de ejecutar comandos de base de datos siempre que sea posible.

Para realizar tareas administrativas, utilice el MongoDB Shell en lugar del controlador Kotlin. Llamando al db.runCommand() El método dentro del shell es el método preferido para emitir comandos de base de datos, ya que proporciona una interfaz consistente entre el shell y los controladores.

Para ejecutar un comando de base de datos, especifique el comando y cualquier parámetro relevante en un documento, luego pase el documento al método runCommand().

El siguiente código muestra cómo puede utilizar el método runCommand() para ejecutar el comando dbStats, que devuelve estadísticas de una base de datos MongoDB especificada:

Nota

Este ejemplo se conecta a una instancia de MongoDB mediante una URI de conexión. Para obtener más información sobre cómo conectarse a su instancia de MongoDB, consulte Guía de conexión.

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
}

Para obtener una lista completa de los comandos de base de datos y los parámetros correspondientes, consulte la guía de comandos de base de datos.

Puede especificar el comportamiento opcional del comando para el método runCommand() incluyendo un parámetro readPreference. El siguiente ejemplo muestra cómo especificar una preferencia de lectura y pasarla como opción al método runCommand():

val command = Document("hello", 1)
val commandReadPreference = Document("readPreference", "secondary")
val result = database.runCommand(command, commandReadPreference)

Para obtener más información sobre las opciones de preferencia de lectura, consulte Preferencia de lectura en el manual del servidor.

Nota

El método runCommand() ignora la preferencia de lectura que haya definido en su objeto database. Si no especifica una preferencia de lectura, este método utiliza la preferencia de lectura primary.

El método runCommand() devuelve un objeto Document que contiene la respuesta de la base de datos tras la ejecución del comando. Cada comando de la base de datos realiza una función diferente, por lo que el contenido de la respuesta puede variar según el comando. Sin embargo, cada respuesta contiene documentos con los siguientes campos:

Campo
Descripción

<command result>

Proporciona campos específicos del comando de base de datos. Por ejemplo, count devuelve el campo n y explain el campo queryPlanner.

ok

Indica si el comando ha tenido éxito (1) o ha fallado (0).

operationTime

Indica el tiempo lógico de la operación. MongoDB utiliza el tiempo lógico para ordenar las operaciones. Para obtener más información sobre el tiempo lógico, consulte nuestra entrada de blog sobre el Reloj Lógico Global.

$clusterTime

Proporciona un documento que devuelve la hora de clúster firmada. La hora de clúster es una hora lógica utilizada para ordenar operaciones.

El documento contiene los siguientes campos:

  • clusterTime:La marca de tiempo del tiempo de clúster más alto conocido para el miembro

  • signature:Un documento que contiene el hash de la hora del clúster y el ID de la clave utilizada para firmar la hora del clúster

Para más información sobre los conceptos de esta guía, consulta la siguiente documentación:

Volver

Indexes

En esta página