Join us at MongoDB.local London on 7 May to unlock new possibilities for your data. Use WEB50 to save 50%.
Register now >
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 Sync. 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

Prefiere 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, usa el MongoDB Shell en lugar del controlador de sincronización de Kotlin. Llamar 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 coherente entre el shell y los drivers.

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

El siguiente código muestra cómo puedes usar el método runCommand() para ejecutar el comando explain, que devuelve una descripción de cómo se ejecutará el comando find si lo llamas:

val commandToExplain = Document("find", "restaurants")
val explanation = database.runCommand(Document("explain", commandToExplain))

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

Puedes especificar un 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 una opción al método runCommand():

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

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

Nota

El método runCommand() ignora la configuración de preferencia de lectura que puedas haber establecido en tu objeto database. Si no se 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 después de que se haya ejecutado el comando. Cada comando de base de datos realiza una función diferente, por lo que el contenido de la respuesta puede variar según los comandos. 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 aprender más sobre el tiempo lógico, consulte nuestra entrada de blog acerca del Reloj Lógico Global.

$clusterTime

Requiere un documento que devuelva el tiempo firmado de clúster. El tiempo de clúster es un tiempo lógico utilizado para el ordenamiento de operaciones.

El documento contiene los siguientes campos:

  • clusterTime, que es la marca de tiempo del mayor tiempo conocido del clúster para el nodo.

  • signature, que es un documento que contiene el hash de la hora del clúster y la ID de la clave utilizada para firmar la hora del clúster.

El siguiente ejemplo muestra cómo ejecutar el comando buildInfo, y la salida que produce:

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({ ... })
}

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

Volver

MongoDB Search e índices de búsqueda vectorial

En esta página