Menu Docs
Página inicial do Docs
/ / /
Driver C++

Execute um comando

Nesta página

  • Visão geral
  • Executar um comando
  • Opções de comando
  • Resposta
  • Informações adicionais

Neste guia, você pode aprender como executar um comando de banco de dados de dados com o driver C++ . Você pode usar comandos de banco de dados 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. 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 C++ . Chamar o db.runCommand() método dentro do shell é o método preferido para emitir comandos do banco de dados de dados, pois ele fornece uma interface consistente entre o shell e os drivers.

Para executar um comando de banco de dados de dados, chame o método de execução run_command() em uma instância mongocxx::database e passe um documento que especifique o comando e quaisquer argumentos relevantes. O método retorna o resultado do comando como um objeto bsoncxx::document::value .

Você pode usar o run_command() método com qualquer comando de banco de dados de dados. Para obter uma lista completa de comandos de banco de dados de dados e parâmetros correspondentes, consulte Comandos de banco de dados no manual do MongoDB Server .

O exemplo seguinte mostra como você pode utilizar o método run_command() para executar o comando hello em um banco de dados de dados, que retorna informações sobre a função do membro atual no conjunto de réplicas:

auto db = client["my_database"];
auto command = make_document(kvp("hello" , 1));
auto result = db.run_command(command.view());
std::cout << bsoncxx::to_json(result) << std::endl;
{
"topologyVersion" : {
"processId" : ...,
"counter" : ...
},
"hosts" : [ ... ],
"setName" : ...,
"setVersion" : ...,
"isWritablePrimary" : ...,
"secondary" : ...,
"primary" : ...,
"tags" : {
"region" : ...,
"availabilityZone" : ...,
"provider" : ...,
"workloadType" : ...,
"nodeType" : ...,
"diskState" : ...
},
"me" : ...,
"electionId" : ...,
"lastWrite" : ...,
"lastWriteDate" : ...,
"majorityOpTime" : ...,
"majorityWriteDate" : ...,
"maxBsonObjectSize" : ...,
"maxMessageSizeBytes" : ...,
"maxWriteBatchSize" : ...,
"localTime" : ...,
"logicalSessionTimeoutMinutes" : ...,
"connectionId" : ...,
"minWireVersion" : ...,
"maxWireVersion" : ...,
"readOnly" : ...,
"ok" : ...,
"$clusterTime" : ...,
"signature" : ...
}

Para personalizar o comportamento de execução do comando, você pode definir opções no documento de comando que você passa para o run_command() método. Para saber mais sobre um comando e as opções que ele aceita, localize o comando e siga o link correspondente na página Comandos do banco de dados no manual do MongoDB Server .

Por exemplo, você pode instruir o comando connectionStatus a retornar o conjunto completo de privilégios que os usuários autenticados atualmente possuem definindo a opção showPrivileges como true no documento de comando:

auto db = client["my_database"];
auto command = make_document(kvp("connectionStatus" , 1), kvp("showPrivileges", true));
auto result = db.run_command(command.view());
std::cout << bsoncxx::to_json(result) << std::endl;
{
"authInfo" : { "authenticatedUsers" : [ { "user" : ..., "db" : ... } ],
"authenticatedUserRoles" : [ { "role" : ..., "db" : ... } ],
"authenticatedUserPrivileges" : [
{ "resource" : { "db" : "", "collection" : "" }, "actions" : [ ... ] },
{ "resource" : { "db" : "config", "collection" : "system.sessions" }, "actions" : [ ... ] },
...,
{ "resource" : { "db" : "", "collection" : "" }, "actions" : [ ... ] }
]
},
"ok" : 1
}

O método run_command() retorna um objeto bsoncxx::document::value que contém a resposta do banco de banco de dados após a execução do comando. Cada comando de banco de dados de dados executa uma função diferente, portanto, o conteúdo da resposta pode variar entre comandos. 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.
$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.

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

Para saber mais sobre os métodos ou tipos discutidos neste guia, consulte a seguinte documentação da API:

Voltar

Agregação