Execute um comando
Visão geral
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.
Executar um comando
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" : ... }
Opções de comando
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 }
Resposta
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:
|
Informações adicionais
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: