Executar um comando de banco de dados
Nesta página
Visão geral
Neste guia, você pode aprender como usar o .NET/C# Driver para executar um comando de banco de dados. Você pode usar comandos de banco de dados para executar uma variedade de tarefas administrativas e de diagnóstico, como buscar estatísticas do servidor , inicializar um conjunto de réplicas ou executar um pipeline de agregação .
Importante
Preferir métodos de driver em vez de reconhecimento de data center
O driver fornece métodos wrapper para muitos comandos de banco de dados . Se possível, recomendamos usar esses métodos em vez de executar comandos de banco de dados .
Para executar tarefas administrativas, use o shell do MongoDB em vez do driver .NET/C#. O shell fornece métodos assistente que podem não estar disponíveis no driver.
Se não houver auxiliares disponíveis no driver ou no shell, você poderá usar o método de shell db.runCommand()
ou os métodos RunCommand()
e RunCommandAsync()
do driver, que são descritos neste guia.
Dados de amostra
Os exemplos neste guia usam a collection sample_restaurants.restaurants
dos conjuntos de dados de amostra do Atlas. Para saber como criar um cluster gratuito do MongoDB Atlas e carregar os conjuntos de dados de amostra, consulte o Início rápido.
Executar um comando
Para executar um comando de banco de dados, crie um objeto BsonDocument
que especifique o comando e passe-o como um parâmetro para o método RunCommand()
ou RunCommandAsync()
. Você pode especificar o tipo retornado por esses métodos especificando o parâmetro type. Você pode usar o tipo BsonDocument
para retornar a resposta do comando ou pode especificar sua própria classe fortemente digitada para desserializar a resposta do comando.
O exemplo seguinte executa o comando hello
em um banco de dados, que retorna informações sobre o servidor. Selecione a aba Asynchronous ou Synchronous para ver o código correspondente.
var command = new BsonDocument("hello", 1); var result = await database.RunCommandAsync<BsonDocument>(command);
var command = new BsonDocument("hello", 1); var result = database.RunCommand<BsonDocument>(command);
Dica
Para ver uma lista completa de comandos de banco de dados e seus parâmetros correspondentes, veja Comandos de banco de dados no manual do MongoDB Server .
Definir uma preferência de leitura
O método RunCommand()
não herda a preferência de leitura que você pode ter definido na sua instância do MongoDatabase
. Por padrão, o RunCommand()
utiliza a preferência de leitura primary
.
Você pode definir uma preferência de leitura para a execução do comando passando uma instância do ReadPreference
como um parâmetro para o RunCommand()
, como mostrado no exemplo a seguir . Selecione a aba Asynchronous ou Synchronous para ver o código correspondente.
var command = new BsonDocument("hello", 1); var result = await database.RunCommandAsync<BsonDocument>(command, ReadPreference.Secondary);
var command = new BsonDocument("hello", 1); var result = database.RunCommand<BsonDocument>(command, ReadPreference.Secondary);
Dica
Para saber mais sobre as opções de preferência de leitura , consulte Read preference no manual do MongoDB Server .
Resposta
O documento de resposta do comando bruto retornado pelo método RunCommand()
contém os seguintes campos:
Campo | Descrição |
---|---|
| Campos específicos do comando de banco de dados de dados. Por exemplo, o comando |
| Indica se o comando foi bem-sucedido ( |
| Um documento que contém o tempo de cluster assinado. O tempo do cluster é um tempo lógico usado para ordenar operações. Este campo se aplica apenas a comandos executados em conjuntos de réplicas ou clusters fragmentados. |
| A hora lógica da execução da operação. Este campo se aplica apenas a comandos executados em conjuntos de réplicas ou clusters fragmentados. |
Dica
Para saber mais sobre o tempo lógico, consulte o verbete da Wikipedia sobre o relógio lógico.
Exemplo
O exemplo a seguir executa o comando dbStats
para recuperar estatísticas de armazenamento para o banco de dados sample_restaurants
e, em seguida, imprime os resultados do comando usando o método ToJson()
no objeto BsonDocument
retornado. Selecione a aba Asynchronous ou Synchronous para ver o código correspondente.
var command = new BsonDocument("dbStats", 1); var result = await database.RunCommandAsync<BsonDocument>(command); Console.WriteLine(result.ToJson());
var command = new BsonDocument("dbStats", 1); var result = database.RunCommand<BsonDocument>(command); Console.WriteLine(result.ToJson());
A saída desse comando inclui informações sobre os dados armazenados no banco de dados, conforme mostrado no resultado retornado pelo exemplo 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 }
Informações adicionais
Para obter mais informações sobre os conceitos deste guia, consulte a seguinte documentação no manual do MongoDB Server :
Documentação da API
Para saber mais sobre qualquer um dos métodos ou tipos discutidos neste guia, consulte a seguinte documentação da API: