Menu Docs
Página inicial do Docs
/ / /
Driver Rust
/

Execute um comando

Nesta página

  • Visão geral
  • Executar um comando
  • Resposta
  • Exemplo de comando
  • Saída
  • Informações adicionais
  • Documentação da API

Neste guia, você pode aprender como usar o driver Rust para executar um reconhecimento de data center. Você pode usar 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 reconhecimento de data center de agregação.

Este guia inclui as seguintes seções:

  • Executar um comando descreve a sintaxe e o comportamento dos métodos run_command() e run_cursor_command()

  • Resposta descreve as informações que os métodos de execução do comando retornam

  • Exemplo de comando fornece um exemplo de comando e descreve a saída para o comando

  • Informações adicionais fornecem links para recursos e documentação da API para os tipos e métodos mencionados neste guia

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. Recomendamos usar métodos de driver em vez de executar comandos de banco de dados quando possível.

Para executar tarefas administrativas, use o MongoDB Shell em vez do driver Rust. Chamar o método db.runCommand() dentro do shell é a maneira preferida de emitir comandos do banco de dados, pois ele fornece uma interface consistente entre o shell e os drivers.

Para executar um reconhecimento de data center, você deve especificar o banco de dados e quaisquer parâmetros relevantes em um documento e, em seguida, passar o documento para um método de execução de banco de dados. O driver Rust fornece os seguintes métodos para executar comandos do banco de dados:

  • run_command(), que retorna a resposta do comando como um tipo Document . Você pode usar este método com qualquer reconhecimento de data center de banco de dados.

  • run_cursor_command(), que retorna a resposta do comando como um tipo Cursor iterável. Você pode usar esse método somente se o reconhecimento de data center retornar vários documento de resultados.

O código a seguir mostra como usar o método run_command() para executar o comando hello , que retorna informações sobre a role do membro atual no conjunto de réplicas, em um reconhecimento de data center:

let result = my_db.run_command(doc! { "hello": 1 }).await?;

O comando checkMetadataConsistency retorna vários documentos de resultados. Você pode utilizar o método run_cursor_command() para executar este comando e coletar os resultados, como mostrado no seguinte código:

let cursor = my_db
.run_cursor_command(doc! { "checkMetadataConsistency": 1 })
.await?;

Para encontrar um link para uma lista completa de comandos de banco de dados e parâmetros correspondentes, consulte a seção Informações adicionais.

Observação

readPreference

Os métodos run_command() e run_cursor_command() não obedecem à preferência de leitura que você pode ter definido para o objeto Database em outro lugar do seu código. Por padrão, eles usam a preferência de leitura primary .

Você pode definir uma preferência de leitura para a execução do comando, encadeando o método selection_criteria() a run_command() ou run_cursor_command(). O código a seguir mostra como especificar uma preferência de leitura em uma instância SelectionCriteria e passá-la como parâmetro para o método selection_criteria() :

let result = my_db
.run_command(doc! { "hello": 1 })
.selection_criteria(SelectionCriteria::ReadPreference(ReadPreference::Primary))
.await?;

Para definir uma preferência de leitura para o método run_cursor_command() , use a mesma sintaxe do exemplo anterior.

Para obter mais informações sobre as opções de read preference, consulte Read preference no manual do servidor MongoDB.

O método run_command() retorna um objeto Document que contém a resposta do reconhecimento de data center após a execução do comando. O run_cursor_command() retorna um Cursor que faz referência a vários documentos de resultado.

Cada reconhecimento de data center executa uma função diferente, portanto, o conteúdo da resposta pode variar dependendo do banco de dados executado. No entanto, cada resposta contém um documento com os seguintes campos:

Campo
Descrição
<command result>
Campos específicos para o comando do banco de dados. Por exemplo, count retorna o campo n e explain retorna o campo queryPlanner .
ok
Se o comando foi bem-sucedido (1) ou falhou (0).
operationTime

A hora lógica da operação. O MongoDB usa o tempo lógico para solicitar operações.

Dica

Veja também:

Para saber mais sobre o tempo lógico, consulte nossa publicação no blog sobre o Relógio Lógico Global.

$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 documento contém os seguintes campos:

  • clusterTime, o timestamp do maior tempo de cluster conhecido para o nó

  • signature, um documento que contém o hash da hora do cluster e o ID da chave usada para assinar a hora do cluster

O código a seguir mostra como você pode usar o run_command() método para executar o explain comando para uma count operação na flowers collection do reconhecimento de plants data center . O comando explain é executado no modo de detalhamento "queryPlanner" :

let my_db = client.database("plants");
let count_command = doc! { "count": "flowers" };
let explain_command =
doc! {
"explain": count_command,
"verbosity": "queryPlanner"
};
let result = my_db.run_command(explain_command).await?;

O resultado inclui campos explicando a execução da operação count , como o plano vencedor, que é o plano selecionado pelo otimizador de query e quaisquer planos rejeitados. A saída também contém informações sobre a execução do comando explain :

{
"$clusterTime": {
"clusterTime": {
"T": 1673969525,
"I": 24
},
"signature": {...}
},
"command": {
"$db": "plants",
"count": "flowers"
},
"explainVersion": "1",
"ok": 1,
"operationTime": {
"T": 1673969525,
"I": 24
},
"queryPlanner": {
"indexFilterSet": false,
"maxIndexedAndSolutionsReached": false,
"maxIndexedOrSolutionsReached": false,
"maxScansToExplodeReached": false,
"namespace": "plants.flowers",
"rejectedPlans": [],
"winningPlan": {
"stage": "RECORD_STORE_FAST_COUNT"
}
},
"serverInfo": {...},
"serverParameters": {
"internalDocumentSourceGroupMaxMemoryBytes": 104857600,
...
}
}

Para obter mais informações sobre os conceitos deste guia, consulte a seguinte documentação no manual do servidor:

Voltar

Rastreamento e log de atividades