Executar um comando de banco de dados
Nesta página
Visão geral
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.
Dados de amostra
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 .
Executar um comando
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 .
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 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 .
Resposta
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 |
---|---|
| 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 somente a comandos executados em conjuntos de réplicas ou cluster fragmentado. |
| 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. |
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 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}
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: