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. 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.

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, 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 .

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 .

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 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 }

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