Menu Docs
Página inicial do Docs
/ / /
Go
/

Execute um comando

Nesta página

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

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.

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 tipo SingleResult . 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 tipo Cursor . 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 .

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.

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

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:

  • clusterTime, que é o carimbo de data/hora do cluster mais alto conhecido para o nó.

  • signature, que é 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 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"}}
var result bson.M
err = db.RunCommand(context.TODO(), explainCommand).Decode(&result)

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,
...
}
}

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 .

Voltar

Transações