Para agentes de IA: um índice de documentação está disponível em https://www.mongodb.com/pt-br/docs/llms.txt — as versões de markdown de todas as páginas estão disponíveis anexando .md a qualquer caminho de URL.

Executar um comando de banco de dados

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.

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').database

Para aprender a criar um cluster MongoDB Atlas gratuito e carregar os conjuntos de dados de amostra, consulte o Guia de Introdução do MongoDB.

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 .

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

acknowledged?

Retorna true se o servidor reconheceu o comando e false caso contrário.

inspect

Retorna uma representação de string formatada da resposta do comando.

ok?

Retorna true se o comando for bem-sucedido e false caso contrário. Se o método ok? retornar false, o driver gerará um Mongo::Error::OperationFailure .

cluster_time

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.

operation_time

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}).first

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}

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 docend

Você pode passar as seguintes opções para os métodos command e cursor_command:

Opção
Métodos
Descrição

:read

command, cursor_command

A preferência de leitura a ser usada para o comando. O método cursor_command também usa essa preferência de leitura para comandos getMore subsequentes. Por padrão, ambos os métodos usam a preferência de leitura primary.

:session

command, cursor_command

A sessão a ser usada para o comando. Se você não especificar uma sessão para o método cursor_command, o driver criará uma sessão implícita que durará durante o tempo de vida do cursor.

:timeout_ms

command, cursor_command

O tempo-limite da operação, em milissegundos. O valor deve ser um número inteiro não negativo. Um valor de 0 significa que não há tempo-limite. Se você não definir essa opção, o método herdará o tempo-limite do banco de dados ou do cliente.

:batch_size

cursor_command

O valor batchSize a ser enviado em comandos getMore.

:max_time_ms

cursor_command

O valor maxTimeMS a ser enviado em comandos getMore. Para definir um limite de tempo no comando inicial, inclua o campo maxTimeMS no documento de comando.

:comment

cursor_command

Um comentário para anexar aos comandos getMore.

:cursor_type

cursor_command

O tipo de cursor, :tailable ou :tailable_await. Este valor deve corresponder aos sinalizadores definidos no documento de comando.

:timeout_mode

cursor_command

O modo de tempo limite, :cursor_lifetime ou :iteration.

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 .

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: