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, puedes aprender cómo utilizar el driver de Ruby para ejecutar un comando de base de datos. Puedes utilizar comandos de base de datos para realizar una variedad de tareas administrativas y de diagnóstico, como obtener estadísticas del servidor, inicializar un set de réplicas o ejecutar una pipeline 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. Si es posible, recomendamos usar estos métodos en lugar de ejecutar comandos de base de datos.

Para realizar tareas administrativas, usa 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 asistentes disponibles en el driver o en la shell, puedes usar el db.runCommand() el método Shell o el método command driver, que se describe en esta guía.

Los ejemplos en esta guía usan la base de datos sample_restaurants de los conjuntos de datos de muestra de Atlas. Para acceder a esta base de datos desde tu aplicación Ruby, crea un objeto Mongo::Client que se conecte a un clúster de Atlas y asigne el siguiente valor a tu variable database:

database = client.use('sample_restaurants')

Para aprender cómo crear un clúster gratuito de MongoDB Atlas y cargar los conjuntos de datos de ejemplo, consulta la guía MongoDB Get Started.

Para ejecutar un comando de base de datos, ejecuta el método de instancia command de una instancia Mongo::Database y pasa 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 los comandos de base de datos y sus parámetros correspondientes, consulta Comandos de base de datos en el manual de MongoDB Server.

El método command no hereda la preferencia de lectura que puedes haber establecido en tu instancia Database. Por defecto, command usa la preferencia de lectura primary.

Puedes 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, consulta Preferencia de lectura en el manual de MongoDB Server.

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

acknowledged?

Devuelve true si el servidor reconoció el comando, y false en caso contrario.

inspect

Devuelve una representación de cadena formateada de la respuesta del comando.

ok?

Devuelve true si el comando se ejecutó correctamente, y false en caso contrario. Si el método ok? devuelve false, el controlador genera un Mongo::Error::OperationFailure .

cluster_time

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.

operation_time

Devuelve la hora lógica 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, consulta la entrada de Wikipedia sobre el reloj lógico.

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}

Para obtener más información sobre los conceptos de esta guía, consulte la siguiente documentación en el manual de MongoDB Server:

Para aprender más sobre cualquiera de los métodos o tipos analizados en esta guía, consulta la siguiente documentación de API:

Volver

Bases de datos y colecciones

En esta página