Menu Docs
Página inicial do Docs
/ / /
Scala
/

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 driver Scala 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 Scala. 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 o método runCommand() do driver, descrito neste guia.

Os exemplos neste guia usam o sample_restaurants banco de dados dos conjuntos de dados de amostra do Atlas . Para acessar esse banco de dados a partir do seu aplicação Scala, crie um MongoClient que se conecte a um Atlas cluster e atribua o seguinte valor à sua variável database:

val database: MongoDatabase = mongoClient.getDatabase("sample_restaurants")

Para saber como criar um cluster MongoDB Atlas gratuito e carregar os conjuntos de dados de amostra, consulte o guia Iniciar com Atlas .

Para executar um comando de banco de dados, crie um objeto Document que especifique o comando e passe-o como um parâmetro para o método runCommand(). Este método retorna uma instância SingleObservable e você pode se inscrever neste observavel para executar o comando e acessar o resultado do comando.

O exemplo a seguir chama o método runCommand() em um banco de dados para executar o comando hello, que retorna informações sobre o servidor:

database.runCommand(Document("hello" -> 1))
.subscribe((doc: Document) => ())

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 ReadPreference como parâmetro para runCommand(), conforme mostrado no código a seguir:

database.runCommand(Document("hello" -> 1), ReadPreference.secondary())
.subscribe((doc: Document) => ())

Dica

Para saber mais sobre as opções de preferência de leitura , consulte Read preference no manual do MongoDB Server .

O método runCommand() retorna um SingleObservable que contém a resposta do banco de dados para o comando fornecido. Você pode chamar o método subscribe() no observable para executar o comando e acessar a resposta como um documento.

O documento bruto de resposta do comando 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 somente a comandos executados em conjuntos de réplicas ou cluster fragmentado.

operationTime

A hora lógica da execução da operação. Este campo se aplica somente a comandos executados em conjuntos de réplicas ou cluster fragmentado.

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:

database.runCommand(Document("dbStats" -> 1))
.subscribe((doc: Document) => println(doc.toJson()),
(e: Throwable) => println(s"There was an error: $e"))

A saída desse comando inclui informações sobre os dados armazenados no banco de dados, conforme mostrado no código a seguir:

{"db": "sample_restaurants", "collections": 4, "views": 0, "objects":
18767, "avgObjSize": 596.1911866574306, "dataSize": 11188720,
"storageSize": 7528448, "totalFreeStorageSize": 0, "numExtents": 0,
"indexes": 6, "indexSize": 1519616, "indexFreeStorageSize": 0,
"fileSize": 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