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 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 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 database variável:

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