Como se conectar ao MongoDB com C ++

Como se conectar ao MongoDB com C ++

Trabalhar em MongoDB é tão fácil quanto trabalhar em nossa ferramenta de linha de comando em qualquer sistema operacional. Enquanto conecta uma linguagem de programação como C ++ por meio de uma ferramenta do Visual Studio a um banco de dados como o MongoDB, nem sempre é simples, como fazemos para outras linguagens de programação como Python e Java. Portanto, vamos explicar cada etapa em direção à conectividade do MongoDB usando C ++ neste guia. Antes de dar uma olhada no código C ++ para se conectar com o MongoDB, você precisa instalar as bibliotecas e ferramentas necessárias no sistema. Começando ao atualizar o sistema, lançamos o aplicativo do console e executamos a instrução "apt" para atualizar e atualizar o sistema Linux em que estamos trabalhando atualmente, que é o Ubuntu 22.04.

Saeedraza@VirtualBox: ~ Upgrade APT de APT e Sudo Apt

Instale pré -requisitos

Os pré -requisitos necessários para a instalação do MongoDB devem ser montados através do console. Os pré-requisitos incluem GNUPG, APT-Transport-HTTPS, CA Certificados e Propriedades Comuns de Software. Usando o mesmo comando "apt", instalamos todos eles de uma vez.

Saeedraza@VirtualBox: ~ $ sudo apt install Dirmngr gnupg apt-transport-https Certificados Certificados-Properties-Common

A coisa mais importante a fazer antes da instalação do MongoDB é adicionar sua chave pública ao nosso sistema. Para fazer isso, experimente a seguinte instrução na concha e execute -a. O valor de retorno "ok" mostra sua inclusão bem -sucedida.

Saeedraza@VirtualBox: ~ $ wget -qo - https: // www.MongoDB.org/static/pgp/server-5.0.ASC | Sudo Apt-Key Add -
AVISO: A tecla apt está preterida. Gerenciar arquivos de chaveiro em confiança.gpg.D em vez disso (veja a chave apt (8)).
OK

Depois de adicionar a chave, adicionamos o repositório "apt" para o MongoDB às "fontes.lista.pasta D ”. Depois disso, atualize seu sistema mais uma vez.

Saeedraza@VirtualBox: ~ $ ECHO "DEB [Arch = AMD64, ARM64] https: // repo.MongoDB.org/apt/ubuntu focal/mongodb-org/5.0 Multiverse "| sudo tee/etc/apt/fontes.lista.D/MONGODB-ORG-5.0.lista
Deb [Arch = AMD64, ARM64] https: // repo.MongoDB.org/apt/ubuntu focal/mongodb-org/5.0 multiverso

Instale o MongoDB

Instalamos o meta-package do MongoDB logo depois que todos os pré-requisitos forem instalados. Então, é hora de sua instalação usando o terminal. O comando para sua instalação mostra o uso da palavra-chave "mongodb-org" com o utilitário "apt-get" do Linux, possibilitando a instalação.

Saeedraza@VirtualBox: ~ $ sudo apt-get install mongodb-org

Reinicie e habilite o serviço MongoDB usando a instrução "SystemCTL" do Linux. Você verá que o servidor de banco de dados MongoDB estaria em execução ativamente de acordo com a instrução "Status".

Saeedraza@VirtualBox: ~ $ sudo SystemCtl Ativar MongoD
Saeedraza@VirtualBox: ~ $ sudo SystemCtl Start MongoD
Saeedraza@VirtualBox: ~ $ sudo Systemctl Status MongoD

Outra maneira de verificar se o MongoDB está ativo e em execução é usar a bandeira "-Eval" com a palavra-chave "mongo" seguida pela função "RuCommand ()". Esta função utiliza o argumento ConnectionStatus como "1". A saída "OK: 1" mostra que o MongoDB está ativo e em execução. Se o status mostrar "0", significa que o MongoDB ainda não está ativo.

Saeedraza@VirtualBox: ~ $ MONGO -EVAL 'DB.RuCommand (ConnectionStatus: 1) '
Versão do Shell MongoDB V5.0.14
Conectando -se a: MongoDB: // 127.0.0.1: 27017/?compressores = desabilitados & gsssapiservicename = mongodb
Sessão implícita: sessão "id": uuid ("71bf84e6-8b13-497a-b408-5e9283d0c016")
Versão do servidor MongoDB: 5.0.14

"Authinfo":
"usuários autenticados" : [ ],
"AuthenticatedUSerroles": []
,
"OK": 1

Para iniciar o servidor MongoDB, use a instrução MongoSh no terminal e você obtém a versão do servidor MongoDB e o shell junto com o shell iniciado.

Saeedraza@VirtualBox: ~ $ mongosh
ID de log atual de MongoSh: 63AC7E4A7D67F35E4F2D95B0
Conectando -se a: MongoDB: // 127.0.0.1: 27017/?DirectConnection = True & ServerSelectionTimeoutms = 2000 & AppName = MongoSh+1.6.1
Usando MongoDB: 5.0.14
Usando MongoSh: 1.6.1

Quando você executa a instrução "Show DBS" no shell do MongoDB, os bancos de dados embutidos são exibidos. No momento, estamos trabalhando no banco de dados "teste".

Teste> Mostrar DBS
Admin 40.00 Kib
Config 36.00 Kib
Local 72.00 Kib

Suponhamos que você tenha uma coleção "Mongo" no banco de dados "teste" com alguns registros.

Teste> Mostrar coleções
Mongo
Teste> dB.Mongo.encontrar()
[[

_id: objectId ("63AB69EA3E19B595A8FB0B90"),
Funcionário: nome: 'aina', trabalho: 'polícia'

]

Instalar dependências

A biblioteca "libmongoc" é uma obrigação para conectar o mongodb com C ++ no Linux. Portanto, você deve instalá -lo usando a instrução de instalação "apt" no aplicativo de console.

Saeedraza@VirtualBox: ~ $ sudo apt-get install libmongoc*

É necessário que a biblioteca "libbson" seja usada para conexão para que possamos adicionar os dados "BSON" ao banco de dados. O mesmo estilo de instrução apt-get é usado para sua instalação.

Saeedraza@VirtualBox: ~ $ sudo apt-get install libbson*

Para criar uma conexão "SSL", a biblioteca de pacotes LIBSSL-DEV deve ser instalada junto com a biblioteca SASL2, "LibsAsl2-dev". O uso do pacote "cmake" é necessário para conectar C ++ com o MongoDB. Sem usá -lo, nosso programa não funcionará.

Saeedraza@VirtualBox: ~ $ sudo apt-get install cmake libssl-dev libssl2-dev

Baixe e instale o driver C ++ para MongoDB

Depois de instalar as dependências, é hora de instalar o driver C ++ para MongoDB no sistema Linux. Vá para a página oficial do Github para o arquivo "alcatrão" deste driver e faça o download no seu fim. Você também pode baixá -lo usando a ferramenta "Curl" no terminal. Movendo -se dentro da pasta atualmente utilizada através da instrução "LS" do Linux, listamos todos os arquivos e pastas. O arquivo destacado em "Red" realmente representa o arquivo Tar "MongoDB-C ++-Driver".

Saeedraza@VirtualBox: ~ $ Curl -ol https: // github.com/mongodb/mongo-cxx-driver/liberações/download/r3.7.0/Mongo-CXX-DRIVER-R3.7.0.alcatrão.gz
Saeedraza@VirtualBox: ~ $ ls
a.Out Downloads Music Public Test.cpp
Desktop Mongo-CXX-DRIVER-R3.7.0 novo.TXT Snap Videos
Documentos Mongo-CXX-DRIVER-R3.7.0.alcatrão.GZ Pictures Modelos

Precisamos executar a instrução "cmake" para desativar a limpeza automática.

Saeedraza@VirtualBox: ~ $ CD Mongo-CXX-DRIVER-R3.7.0
Saeedraza@VirtualBox: ~/Mongo-Cxx-Driver-R3.7.0 $ cmake -denable_automatom-init_and_clearnup = OFF

Construa o driver Mongocxx no mesmo diretório usando a bandeira "-Build".

Saeedraza@VirtualBox: ~/Mongo-Cxx-Driver-R3.7.0 $ cmake -build .

Para instalar o driver construído, execute a seguinte instrução:

Saeedraza@VirtualBox: ~/Mongo-Cxx-Driver-R3.7.0 $ cmake -build . --Instalação de destino

Exemplo de código C ++

A partir do exemplo de código C ++ para elaborar a conectividade do mongodb com C ++, usamos o código do Visual Studio em nosso sistema. Crie um arquivo C ++ onde você deve construir o driver MongoCxx e executar o código. O código começa com o uso de bibliotecas básicas de "C ++", juntamente com a inclusão de arquivos de construção MOGOCXX que são mantidos na pasta do driver após uma compilação. Todos os caminhos de arquivo necessários são incluídos como cabeçalhos.

Depois disso, começamos nossa função principal () para iniciar a conectividade. A instância do MongoDB é feita e declaramos o caminho do endereço do cliente como "URI", necessário para a conexão entre C ++ e MongoDBB. Um fluxo de documentos é feito como "doc". A declaração "Try-Catch" é utilizada para executar a tarefa importante a fazer e exibir o erro em conexão, se houver algum. A declaração de tentativa declara um cliente usando a variável "URI" na variável "CON". O banco de dados "Teste" é usado na variável "CON" e a coleção "Mongo" é chamada do banco de dados "Teste".

Uma variável de documento é gerada e o loop "for" está aqui para obter 2 valores variáveis, "Nome" e "Job", da coleção "Mongo" usando o formato "BSON". Ambos os registros são exibidos como um documento. A declaração Catch () está aqui para executar caso a conexão não tenha sido estabelecido.

#incluir
#incluir
#incluir
#incluir
#incluir
#incluir
#incluir
#incluir
#incluir
#incluir
Usando BSONCXX :: Builder :: Stream :: Close_array;
Usando BSONCXX :: Builder :: Stream :: Close_Document;
Usando BSONCXX :: Builder :: Stream :: Document;
Usando BSONCXX :: Builder :: Stream :: Finalize;
Usando BSONCXX :: Builder :: Stream :: Open_array;
Usando BSONCXX :: Builder :: Stream :: Open_Document;
int main (int argc, char* argv)
mongocxx :: instância inst ;
mongocxx :: URI URI ("MONGODB: // localhost: 27017");
BSONCXX :: Build :: Stream :: Document Doc;
tentar
mongocxx :: client con (uri);
mongocxx :: banco de dados db = con ("teste")
mongocxx :: collection col = db ["Mongo"];
Doc << "job" << argv[1];
mongocxx :: cursor cur = col.encontre (doc.visualizar());
para (Auto && d: cur)
BSONCXX :: Document :: Nome do elemento = D ["Nome"];
BSONCXX :: Document :: Element Job = D ["Job"];
std :: string strname = std :: string (nome.get_utf8 ().valor);
std :: string strjob = std :: string (trabalho.get_utf8 ().valor);
std :: cout << "Employee: " << Name << " : "<< Job <
catch (const std :: Exception & e)
std :: cout <<"Connection Faild!" << e.what() << std::endl;
return exit_failure;

retornar 0;

Depois de executar este arquivo de código C ++, podemos buscar os registros de uma coleção Mongo do banco de dados de teste, conforme exibido no seguinte:

Funcionário: Ainda: Polícia

Conclusão

Este guia é um pacote de etapas necessárias a serem tomadas para o processo de conectividade de C ++ com o servidor de banco de dados MongoDBB. A partir da introdução, explicamos a diferença na conectividade entre C ++ e outros idiomas com MongoDB. Depois de instalar os pré -requisitos, discutimos o método para instalar o servidor MongoDB junto com algumas de suas dependências antes da instalação do driver MongoDB C ++. No final, o programa C ++ é usado no Visual Studio depois de construir o driver Mongocxx para se conectar com o MongoDBB.