Docs Menu
Docs Home
/ /

Ejecute un comando de base de datos

En esta guía, aprenderá a usar el controlador .NET/C# 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 Shell de MongoDB en lugar del controlador .NET/C#. 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 los métodos RunCommand() y RunCommandAsync() del controlador, que se describen en esta guía.

Los ejemplos de esta guía utilizan la colección de los sample_restaurants.restaurants conjuntos de datos de muestra de Atlas. Para aprender a crear un clúster gratuito de MongoDB Atlas y cargar los conjuntos de datos de muestra, consulte Introducción al controlador .NET/C#.

Para ejecutar un comando de base de datos, cree un objeto BsonDocument que especifique el comando y páselo como parámetro al método RunCommand() o RunCommandAsync(). Puede especificar el tipo que devuelven estos métodos especificando el parámetro de tipo. Puede usar el tipo BsonDocument para devolver la respuesta del comando o especificar su propia clase fuertemente tipada para deserializar la respuesta del comando.

El siguiente ejemplo ejecuta el comando hello en una base de datos, que devuelve información sobre el servidor. Seleccione el Synchronous o la pestaña Asynchronous para ver el código correspondiente.

var command = new BsonDocument("hello", 1);
var result = database.RunCommand<BsonDocument>(command);
var command = new BsonDocument("hello", 1);
var result = await database.RunCommandAsync<BsonDocument>(command);

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.

El método RunCommand() no hereda la preferencia de lectura que podría haber configurado en su instancia MongoDatabase. De forma predeterminada, RunCommand() utiliza la preferencia de lectura primary.

Puede establecer una preferencia de lectura para la ejecución del comando pasando una instancia ReadPreference como parámetro a RunCommand(), como se muestra en el siguiente ejemplo. Seleccione la pestaña Synchronous o Asynchronous para ver el código correspondiente.

var command = new BsonDocument("hello", 1);
var result = database.RunCommand<BsonDocument>(command, ReadPreference.Secondary);
var command = new BsonDocument("hello", 1);
var result = await database.RunCommandAsync<BsonDocument>(command, ReadPreference.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.

El documento de respuesta del comando sin procesar devuelto por el método RunCommand() contiene los siguientes campos:

Campo
Descripción

<command result>

Campos específicos del comando de base de datos. Por ejemplo, el comando hello devuelve el campo topologyVersion.

ok

Indica si el comando se ha ejecutado correctamente (1.0) o ha fallado (0.0). El controlador genera un MongoCommandException si el valor de ok es 0.0.

$clusterTime

Un documento que contiene la hora firmada del clúster. La hora del clúster es una hora lógica que se utiliza para ordenar las operaciones. Este campo solo se aplica a los comandos que se ejecutan en conjuntos de réplicas o clústeres fragmentados.

operationTime

El tiempo lógico de ejecución de la operación. Este campo solo aplica a comandos ejecutados en conjuntos de réplicas o clústeres fragmentados.

Tip

Para obtener más información sobre el tiempo lógico, consulte la entrada de Wikipedia sobre el reloj lógico.

El siguiente ejemplo ejecuta el comando dbStats para recuperar estadísticas de almacenamiento de la base de datos sample_restaurants y luego imprime los resultados del comando utilizando el método ToJson() en el objeto BsonDocument devuelto. Seleccione la pestaña Synchronous o Asynchronous para ver el código correspondiente.

var command = new BsonDocument("dbStats", 1);
var result = database.RunCommand<BsonDocument>(command);
Console.WriteLine(result.ToJson());
var command = new BsonDocument("dbStats", 1);
var result = await database.RunCommandAsync<BsonDocument>(command);
Console.WriteLine(result.ToJson());

La salida de este comando incluye información sobre los datos almacenados en la base de datos, como se muestra en el resultado devuelto por el ejemplo anterior:

{ "db" : "sample_restaurants", "collections" : 2, "views" : 0, "objects" :
NumberLong(25438), "avgObjSize" : 548.95172576460413, "dataSize" : NumberLong(13964234),
"storageSize" : NumberLong(8056832), "totalFreeStorageSize" : NumberLong(0),
"numExtents" : NumberLong(0), "indexes" : 2, "indexSize" : NumberLong(1044480),
"indexFreeStorageSize" : NumberLong(0), "fileSize" : NumberLong(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

Índices de búsqueda vectorial y de búsqueda de MongoDB

En esta página