Overview
En esta guía, aprenderá a usar el controlador Ruby para ejecutar un comando de base de datos. 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. Si es posible, recomendamos usar estos métodos en lugar de ejecutar comandos de base de datos.
Para realizar tareas administrativas, utilice el MongoDB Shell en lugar del controlador Ruby. El shell proporciona métodos auxiliares que podrían no estar disponibles en el controlador.
Si no hay ayudantes disponibles en el controlador o el shell, puede utilizar el db.runCommand() método de shell o el método command del controlador, que se describe en esta guía.
Datos de muestra
Los ejemplos de esta guía utilizan la sample_restaurants base de datos de los conjuntos de datos de muestra de Atlas. Para acceder a esta base de datos desde su aplicación Ruby, cree un Mongo::Client objeto que se conecte a un clúster de Atlas y asigne el siguiente valor a su database variable:
database = client.use('sample_restaurants')
Para aprender cómo crear un clúster gratuito de MongoDB Atlas y cargar los conjuntos de datos de muestra, consulte la guía de introducción a MongoDB.
Ejecutar un comando
Para ejecutar un comando de base de datos, ejecute el método de instancia command de una instancia Mongo::Database y pase el nombre de la operación a ejecutar como parámetro.
El siguiente ejemplo llama al método command para ejecutar el comando hello, que devuelve información sobre el servidor:
client.database.command(hello: 1)
Tip
Para ver una lista completa de comandos de base de datos y sus parámetros correspondientes, consulte Comandos de base de datos en el manual de MongoDB Server.
Establecer una preferencia de lectura
El método command no hereda la preferencia de lectura que podría haber configurado en su instancia Database. De forma predeterminada, command utiliza la preferencia de lectura primary.
Puede establecer una preferencia de lectura para la ejecución del comando pasando la opción :read al método command, como se muestra en el siguiente código:
client.database.command({hello: 1}, read: {mode: :secondary})
Tip
Para obtener más información sobre las opciones de preferencia de lectura, consulte Preferencia de lectura en el manual de MongoDB Server.
Respuesta
El método command devuelve un Mongo::Operation::Result que contiene la respuesta de la base de datos para el comando dado.
Puede acceder a los campos del documento de respuesta del comando sin procesar mediante los siguientes métodos:
Método | Descripción |
|---|---|
| Devuelve |
| Devuelve una representación de cadena formateada de la respuesta del comando. |
| Devuelve |
| Devuelve la hora del clúster indicada en la respuesta del servidor. La hora del clúster es una hora lógica que se utiliza para ordenar las operaciones. Este campo solo aplica a los comandos ejecutados en conjuntos de réplicas o en un clúster fragmentado. |
| Devuelve el tiempo lógico de la ejecución de la operación. |
Para obtener una lista completa de los métodos disponibles en el Result objeto, consulte la documentación de la API.
Tip
Para obtener más información sobre el tiempo lógico, consulte la entrada de Wikipedia sobre el reloj lógico.
Ejemplo
El siguiente ejemplo ejecuta el comando dbStats para recuperar estadísticas de almacenamiento para la base de datos sample_restaurants y luego imprime los resultados del comando utilizando el método inspect:
puts client.database.command({dbStats: 1}).first
La salida de este comando incluye información sobre los datos almacenados en la base de datos, como se muestra en el siguiente código:
{"db"=>"sample_restaurants", "collections"=>4, "views"=>0, "objects"=>18767, "avgObjSize"=>596.1911866574306, "dataSize"=>11188720, "storageSize"=>7528448, "totalFreeStorageSize"=>0, "numExtents"=>0, "indexes"=>6, "indexSize"=>1519616, "indexFreeStorageSize"=>0, "fileSize"=>0, "nsSizeMB"=>0, "ok"=>1}
Información Adicional
Para obtener más información sobre los conceptos de esta guía, consulte la siguiente documentación en el manual de MongoDB Server:
Documentación de la API
Para aprender más sobre cualquiera de los métodos o tipos analizados en esta guía, consulta la siguiente documentación de API: