Menu Docs
Página inicial do Docs
/ / /
C#/.NET
/ /

Executar um comando de banco de dados

Nesta página

  • Visão geral
  • Dados de amostra
  • Executar um comando
  • Definir uma preferência de leitura
  • Resposta
  • Exemplo
  • Informações adicionais
  • Documentação da API

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.

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.

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 .

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 .

O documento de resposta do comando bruto retornado pelo método RunCommand() contém os seguintes campos:

Campo
Descrição

<command result>

Campos específicos do comando de banco de dados de dados. Por exemplo, o comando hello retorna o campo topologyVersion .

ok

Indica se o comando foi bem-sucedido (1.0) ou falhou (0.0). O driver gera um MongoCommandException se o valor de ok for 0.0.

$clusterTime

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.

operationTime

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.

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 }

Para obter mais informações sobre os conceitos deste guia, consulte a seguinte documentação no manual do MongoDB Server :

Para saber mais sobre qualquer um dos métodos ou tipos discutidos neste guia, consulte a seguinte documentação da API:

Voltar

reconhecimento de data center e collection