Visão geral
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:
Execute a Command describes the syntax and behavior of the
run_command()andrun_cursor_command()methodsResposta 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.
To perform administrative tasks, use the MongoDB Shell instead of the Rust driver. Calling the db.runCommand() method inside the shell is the preferred way to issue database commands, as it provides a consistent interface between the shell and drivers.
Executar um comando
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 tipoDocument. 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 tipoCursoriterá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?;
To find a link to a full list of database commands and corresponding parameters, see the Additional Information section.
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.
Resposta
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, |
| Se o comando foi bem-sucedido ( |
| A hora lógica da operação. O MongoDB usa o tempo lógico para solicitar operações. Para saber mais sobre o tempo lógico, consulte nossa publicação no blog sobre o Relógio Lógico Global. |
| 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:
|
Exemplo de comando
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?;
Saída
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, ... } }
Informações adicionais
Para obter mais informações sobre os conceitos deste guia, consulte a seguinte documentação no manual do servidor: