Join us Sept 17 at .local NYC! Use code WEB50 to save 50% on tickets. Learn more >
MongoDB Event
Menu Docs
Página inicial do Docs
/ / /
Driver C
/

Escolha um destino de conexão

Neste guia, você pode aprender como utilizar uma string de conexão e um objeto do mongoc_client_t para conectar a diferentes tipos de sistemas MongoDB .

Para se conectar a uma MongoDB deployment no Atlas, inclua os seguintes elementos em sua connection string:

  • O URL do seu Atlas cluster

  • Seu nome de usuário MongoDB

  • Sua senha do MongoDB

Em seguida, passe sua string de conexão para a função mongoc_client_new().

Dica

Siga oguia de conexão do driver do Atlas para recuperar sua connection string.

O código abaixo mostra como usar o driver C para se conectar a um cluster Atlas . O código também usa a função mongoc_server_api_new() para especificar uma versão da API estável.

bson_t *ping = BCON_NEW ("ping", BCON_INT32 (1));
bson_t reply = BSON_INITIALIZER;
bson_error_t error;
mongoc_client_t *client = NULL;
// Create a new client
client = mongoc_client_new ("mongodb+srv://<db_username>:<db_password>@<hostname:port>/?<options>");
// Set the version of the Stable API on the client
mongoc_server_api_t *api = mongoc_server_api_new(MONGOC_SERVER_API_V1);
if (!mongoc_client_set_server_api(client, api, &error)) {
fprintf(stderr, "error: %s\n", error.message);
goto cleanup;
}
// Send a ping to confirm a successful connection
if (!mongoc_client_command_simple (client, "admin", ping, NULL, &reply, &error)) {
fprintf(stderr, "error: %s\n", error.message);
goto cleanup;
}
printf ("Pinged your deployment. You successfully connected to MongoDB!\n");
cleanup:
bson_destroy (&reply);
bson_destroy (ping);
mongoc_server_api_destroy (api);
mongoc_client_destroy (client);

Dica

Ao se conectar ao Atlas, recomendamos usar a opção de cliente Stable API para evitar alterações significativas quando o Atlas atualizar para uma nova versão do MongoDB Server. Para saber mais sobre a API estável, consulte o guia de API estável.

Para se conectar a uma implantação local do MongoDB, use localhost como nome do host. Por padrão, o processo mongod é executado na porta 27017, embora você possa personalizar isso para seu sistema.

O código a seguir mostra como usar o driver C para se conectar a um MongoDB deployment local:

bson_t *ping = BCON_NEW ("ping", BCON_INT32 (1));
bson_t reply = BSON_INITIALIZER;
bson_error_t error;
mongoc_client_t *client = NULL;
// Create a new client
mongoc_uri_t *uri = mongoc_uri_new_with_error ("mongodb://localhost:27017", &error);
if (!uri) {
fprintf (stderr, "failed to parse URI, error: %s\n", error.message);
goto cleanup;
}
client = mongoc_client_new_from_uri (uri);
if (!client) {
goto cleanup;
}
// Send a ping to confirm a successful connection
if (!mongoc_client_command_simple (client, "admin", ping, NULL, &reply, &error)) {
fprintf(stderr, "error: %s\n", error.message);
goto cleanup;
}
printf ("Pinged your deployment. You successfully connected to MongoDB!\n");
cleanup:
bson_destroy (&reply);
bson_destroy (ping);
mongoc_client_destroy (client);
mongoc_uri_destroy (uri);

Para se conectar a um conjunto de réplicas, especifique o nome do host (ou endereço IP) e o número de porta dos membros do conjunto de réplicas.

Em vez de fornecer uma lista completa de hosts no conjunto de réplicas, você pode especificar um ou mais hosts no conjunto de réplicas e instruir o driver C a executar a descoberta automática para encontrar os outros. Para instruir o driver a realizar a descoberta automática, execute uma das seguintes ações:

  • Especifique o nome do conjunto de réplica como o valor do parâmetro replicaSet.

  • Especifique false como o valor do parâmetro directConnection.

  • Especifique mais de um host no conjunto de réplica.

O exemplo a seguir usa um URI de conexão de exemplo para se conectar ao conjunto de réplicas do MongoDB myreplset, que está sendo executado na porta 27017 de três hosts diferentes:

bson_t *ping = BCON_NEW ("ping", BCON_INT32 (1));
bson_t reply = BSON_INITIALIZER;
bson_error_t error;
mongoc_client_t *client = NULL;
// Create a new client
client = mongoc_client_new ("mongodb://host01:27017,host02:27017,host03:27017/?replicaSet=myreplset");
if (!client) {
goto cleanup;
}
// Send a ping to confirm a successful connection
if (!mongoc_client_command_simple (client, "admin", ping, NULL, &reply, &error)) {
fprintf(stderr, "error: %s\n", error.message);
goto cleanup;
}
printf ("Pinged your deployment. You successfully connected to MongoDB!\n");
cleanup:
bson_destroy (&reply);
bson_destroy (ping);
mongoc_client_destroy (client);

A mongoc_client_new() função não está bloqueando. Quando você se conecta a um conjunto de réplicas, o construtor retorna imediatamente enquanto o cliente usa threads em segundo plano para se conectar ao conjunto de réplicas.

Se você construir um objeto mongoc_client_t e imprimir imediatamente a representação de string de seu atributo nodes, a lista poderá estar vazia enquanto o cliente se conecta aos membros do conjunto de réplicas.

Observação

Conjunto de réplicas no Docker

Quando um conjunto de réplicas é executado no Docker, ele pode expor apenas um endpoint MongoDB . Nesse caso, o conjunto de réplicas não é detectável. Especificar directConnection=false em seu URI de conexão ou deixar essa opção sem definir pode impedir que seu aplicação se conecte a ele.

Em um ambiente de teste ou desenvolvimento, é possível conectar-se ao conjunto de réplicas especificando directConnection=true. Em um ambiente de produção, recomendamos configurar o cluster para que cada instância do MongoDB seja acessível fora da rede virtual do Docker.

Para obter mais informações sobre os objetos e funções mencionados neste guia, consulte a seguinte documentação da API:

Voltar

Stable API

Nesta página