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 de dados. Você pode usar comandos de banco de dados 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 de dados. Se possível, recomendamos usar esses métodos em vez de executar comandos de banco de dados de dados.
Para executar tarefas administrativas, use o MongoDB Shell 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 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 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 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 de ReadPreference
como parâmetro para RunCommand()
, conforme 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 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 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: