Visão geral
Neste guia, você pode aprender como usar o driver Ruby 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 MongoDB em vez do driver Ruby. 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 command e cursor_command do driver, descritos neste guia.
Dados de amostra
Os exemplos neste guia usam o banco de dados sample_restaurants dos conjuntos de dados de amostra do Atlas. Para acessar esse banco de dados a partir do aplicação Ruby, crie um objeto Mongo::Client que se conecte a um Atlas cluster e atribua o seguinte valor à variável database:
database = client.use('sample_restaurants').databasePara aprender a criar um cluster MongoDB Atlas gratuito e carregar os conjuntos de dados de amostra, consulte o Guia de Introdução do MongoDB.
Use o método command
Para executar um comando de banco de dados, chame o método command na sua instância Mongo::Database e passe o nome da operação a ser executada como um parâmetro.
O exemplo seguinte chama o método command para executar o comando hello, que retorna informações sobre o servidor:
database.command(hello: 1)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 .
command Resposta
O método command retorna um Mongo::Operation::Result que contém a resposta do banco de dados para o comando fornecido.
Você pode acessar os campos do documento bruto de resposta do comando usando os seguintes métodos:
Método | Descrição |
|---|---|
| Retorna |
| Retorna uma representação de string formatada da resposta do comando. |
| Retorna |
| Retorna o tempo de agrupamento relatado na resposta do servidor . 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. |
| Retorna o tempo lógico da execução da operação. |
Para obter uma lista completa dos métodos disponíveis no objeto Result, consulte a documentação da API.
Dica
Para saber mais sobre o tempo lógico, consulte o verbete da Wikipedia sobre o relógio lógico.
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 inspect:
puts database.command({dbStats: 1}).firstA 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}Use o método cursor_command
Alguns comandos de banco de dados retornam seus resultados em um cursor. Para executar esses comandos, chame o método cursor_command na sua instância Mongo::Database. Este método retorna um objeto Mongo::Cursor que recupera lotes adicionais de resultados do servidor à medida que você o percorre. Se a resposta do comando não contiver um cursor, o driver gera um erro Mongo::Error::InvalidCursorOperation.
O exemplo a seguir executa o comando listCollections usando o método cursor_command e imprime o nome e o tipo de cada coleção no banco de dados sample_restaurants:
cursor = database.cursor_command(listCollections: 1, nameOnly: true)cursor.each do |doc| puts docendOpções de comando
Você pode passar as seguintes opções para os métodos command e cursor_command:
Opção | Métodos | Descrição |
|---|---|---|
|
| A preferência de leitura a ser usada para o comando. O método |
|
| A sessão a ser usada para o comando. Se você não especificar uma sessão para o método |
|
| O tempo-limite da operação, em milissegundos. O valor deve ser um número inteiro não negativo. Um valor de |
|
| O valor |
|
| O valor |
|
| Um comentário para anexar aos comandos |
|
| O tipo de cursor, |
|
| O modo de tempo limite, |
Definir uma preferência de leitura
Os métodos command e cursor_command não herdam a preferência de leitura na sua instância Database.
Você pode definir uma preferência de leitura para a execução do comando passando a opção :read para o método command, conforme mostrado no código a seguir:
database.command({hello: 1}, read: {mode: :secondary})Dica
Para saber mais sobre as opções de preferência de leitura , consulte Read preference no manual do MongoDB Server .
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: