Execute um comando
Nesta página
Visão geral
Neste guia, você pode aprender como executar um reconhecimento de data center com o driver Go. 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.
Executar um comando
Para executar um banco de dados, você deve especificar o reconhecimento de data center e quaisquer parâmetros relevantes em um documento, em seguida, passar o documento para um método wrapper. O documento de comando deve ser um tipo de preservação de ordem, como bson.D
. O driver Go fornece os seguintes métodos para executar reconhecimento de data center do banco de dados:
RunCommand()
, que retorna a resposta do comando como um tipoSingleResult
. Você pode usar este método com qualquer reconhecimento de data center de banco de dados.RunCommandCursor()
, que retorna a resposta do comando como um tipoCursor
. Você pode usar esse método se o reconhecimento de data center retornar vários documento de resultado.
O código a seguir mostra como usar o método RunCommand()
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:
command := bson.D{{"hello", 1}} var result bson.M err = db.RunCommand(context.TODO(), command).Decode(&result)
Para obter uma lista completa de comandos de banco de dados e parâmetros correspondentes, consulte a seção Informações adicionais.
Observação
readPreference
RunCommand()
e RunCommandCursor()
não obedecem à preferência de leitura que você pode ter definido para o objeto Database
em outro lugar do seu código. Você pode definir uma preferência de leitura para a execução do comando passando um objeto RunCmdOptions
para qualquer um dos métodos:
opts := options.RunCmd().SetReadPreference(readpref.Primary()) cursor, err := db.RunCommandCursor(context.TODO(), command, opts)
Para obter mais informações sobre as opções de preferência de leitura , consulte a página de fundamentos do Modificar a Execução da Execução de Operações CRUD .
Resposta
Cada método retorna um objeto SingleResult
ou um cursor que contém a resposta do reconhecimento de data center após a execução do comando. Cada reconhecimento de data center executa uma função diferente, portanto, o conteúdo da resposta pode variar entre comandos de banco de dados. No entanto, cada resposta contém documentos com os seguintes campos:
Campo | Descrição |
---|---|
<command result> | Fornece campo específicos para o reconhecimento de data center do banco de dados. Por exemplo, count retorna o campo n e explain retorna o campo queryPlanner . |
ok | Indica se o comando foi bem-sucedido ( 1 ) ou falhou (0 ). |
operationTime | Indica 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. |
$clusterTime | Fornece um documento que retorna a hora do cluster assinado. O tempo de cluster é um tempo lógico usado para ordenar operações. O documento contém os seguintes campos:
|
Exemplo
O código a seguir mostra como você pode usar o RunCommand()
método para executar o explain
comando para uma count
operação na flowers
collection do reconhecimento de db
data center . O comando explain
é executado no modo de detalhamento "queryPlanner"
:
db := client.Database("db") // Creates commands to count documents in a collection and explain // how the count command runs countCommand := bson.D{{"count", "flowers"}} explainCommand := bson.D{{"explain", countCommand}, {"verbosity", "queryPlanner"}} // Retrieves results of the explain command var result bson.M err = db.RunCommand(context.TODO(), explainCommand).Decode(&result)
Saída
Na saída, você deve ver 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": "db", "count": "flowers" }, "explainVersion": "1", "ok": 1, "operationTime": { "T": 1673969525, "I": 24 }, "queryPlanner": { "indexFilterSet": false, "maxIndexedAndSolutionsReached": false, "maxIndexedOrSolutionsReached": false, "maxScansToExplodeReached": false, "namespace": "db.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:
Para saber como recuperar dados de um cursor, consulte a página de fundamentos do Access Data from a Cursor .