Para agentes de IA: um índice de documentação está disponível em https://www.mongodb.com/pt-br/docs/llms.txt — as versões de markdown de todas as páginas estão disponíveis anexando .md a qualquer caminho de URL.

Especificar opções de conexão

Esta página descreve as opções de conexão disponíveis no driver C e explica como aplicá-las à sua conexão MongoDB.

As seções a seguir descrevem maneiras de especificar opções de conexão.

Se você passar uma string de conexão para a estrutura monogoc_client_t, poderá incluir opções de conexão na string como <name>=<value> pares. No exemplo a seguir , a string de conexão contém a opção connectTimeoutMS com um valor de 60000 e a opção tls com um valor de true:

mongoc_init(); // Specifies the connection options in the connection stringconst char *uri = "mongodb+srv://localhost:27017/?connectTimeoutMS=60000&tls=true"; // Creates a new clientmongoc_client_t *client = mongoc_client_new_from_uri_with_error(uri, &error); if (!client) { fprintf(stderr, "%s\n", error.message); goto cleanup;} // Use client... cleanup: mongoc_client_destroy(client); mongoc_uri_destroy(uri);

Para saber mais sobre as opções que você pode especificar em uma string de conexão, consulte Opções de string de conexão no manual do MongoDB Server.

Você pode usar opções de URI para definir as configurações de conexão no código em vez de em uma string de conexão. Configurar a conexão dessa forma facilita a alteração das configurações no tempo de execução, ajuda a detectar erros durante a compilação e fornece mais opções de configuração do que a string de conexão.

Para definir opções de conexão usando a opção URI, execute as seguintes etapas:

  1. Crie uma estrutura mongoc_uri_t com sua string de conexão

  2. Use uma função de opção de URI para especificar a opção de conexão desejada

  3. Crie um novo cliente com o URI passando o URI para mongoc_client_new_from_uri()

O seguinte exemplo de código mostra como executar as etapas anteriores:

mongoc_uri_t *uri = mongoc_uri_new_with_error("mongodb+srv://localhost:27017/", &error); if (!uri) { fprintf(stderr, "%s\n", error.message); goto cleanup;} // Specifies the connection options by using the URI options APIif (!mongoc_uri_set_option_as_int32(uri, MONGOC_URI_CONNECTTIMEOUTMS, 60000)) { fprintf(stderr, "Failed to set '%s'\n", MONGOC_URI_CONNECTTIMEOUTMS); goto cleanup;} if (!mongoc_uri_set_option_as_bool(uri, MONGOC_URI_TLS, true)) { fprintf(stderr, "Failed to set '%s'\n", MONGOC_URI_TLS); goto cleanup;} // Creates a new clientclient = mongoc_client_new_from_uri_with_error(uri, &error); if (!client) { fprintf(stderr, "%s\n", error.message); goto cleanup; } // Use client... cleanup: mongoc_client_destroy(client); mongoc_uri_destroy(uri);

As seções a seguir descrevem as opções de conexão disponíveis no driver C e como especificá-las usando uma string de conexão diretamente ou uma opção de URI.

Especifica se todas as operações devem ser forçadas a serem despachadas para o hospedar. Se você especificar esta opção, o driver não aceitará o formato de conexão SRV. Em vez disso, você deve usar o formato URI de conexão padrão. Para saber mais sobre a conexão SRV e os formatos de conexão padrão, consulte o guia strings de conexão.

O valor padrão é false. Esta propriedade deve ser configurada para false se você especificar mais de um nome de host.

mongoc_uri_t *uri = mongoc_uri_new("mongodb://localhost:27017/?directConnection=true");

O nome do conjunto de réplicas a que se conectar. O valor padrão é null.

mongoc_uri_t *uri = mongoc_uri_new("mongodb+srv://localhost:27017/?replicaSet=yourReplicaSet");

Especifica se é necessário o TLS para conexões com o servidor. Se você usar um esquema de "mongodb+srv" ou especificar outras opções de TLS, essa opção será padronizada como true. Caso contrário, o padrão é false.

mongoc_uri_t *uri = mongoc_uri_new("mongodb+srv://localhost:27017/?tls=true");

Especifica se as restrições TLS devem ser relaxadas tanto quanto possível. Isso pode incluir permitir certificados inválidos ou incompatibilidades de nomes de host. O valor padrão é false.

O seguinte exemplo de código mostra como definir esta opção para true:

mongoc_uri_t *uri = mongoc_uri_new("mongodb+srv://localhost:27017/?tls=true&tlsAllowInvalidCertificates=true");

Se a verificação de revogação de certificado deve ser desabilitada durante a negociação TLS. O valor padrão é false.

mongoc_uri_t *uri = mongoc_uri_new("mongodb+srv://localhost:27017/?tls=true&tlsDisableCertificateRevocationCheck=true");

Opções de TLS/SSL, incluindo certificados de cliente , manuseio de revogação e protocolos TLS/SSL habilitados e desabilitados. O valor padrão é null.

Essa opção só pode ser definida usando Opções de URI. Para aprender como definir opções de SSL, consulte a seção Opções de SSL na aba MongoC URI Option.

Para obter mais informações sobre as opções de TLS, consulte o guia Configurar o TLS (Transport Layer Security).

O período de tempo em que o driver tenta estabelecer uma única conexão de soquete TCP com o servidor antes de atingir o tempo limite. O valor padrão é 10 segundos.

mongoc_uri_t *uri = mongoc_uri_new("mongodb+srv://localhost:27017/?connectTimeoutMS=60000");

O período de tempo em que o driver tenta enviar ou receber em um soquete antes de atingir o tempo limite. O valor padrão é definido pelo sistema operacional.

mongoc_uri_t *uri = mongoc_uri_new("mongodb+srv://localhost:27017/?socketTimeoutMS=60000");

Os tipos de compactação preferidos, em ordem, para mensagens de protocolo de conexão enviadas ou recebidas do servidor. Você pode ativar "snappy", "zlib" e "zstd" como dependências de tempo de compilação opcionais. O driver usa o primeiro desses tipos de compactação para os quais o servidor oferece suporte. O valor padrão está vazio.

mongoc_uri_t *uri = mongoc_uri_new("mongodb+srv://localhost:27017/?compressors=zlib,snappy");

O maior número de clientes ou conexões que o driver pode criar em seu pool de conexões. Esta contagem inclui conexões em uso. O valor padrão é 100.

mongoc_uri_t *uri = mongoc_uri_new("mongodb+srv://localhost:27017/?maxPoolSize=150");

O período de tempo em que o driver tenta verificar uma conexão do pool de conexões de um servidor antes de atingir o tempo limite.

mongoc_uri_t *uri = mongoc_uri_new("mongodb+srv://localhost:27017/?waitQueueTimeoutMS=30000");

Para saber mais sobre pool de conexões, consulte o Guia de pool de conexões.

O componente w da preocupação de gravação, que solicita a confirmação de que a operação de escrita se propagou para um número específico de instâncias do MongoDB . O valor padrão é "majority" ou 1, dependendo do número de árbitros e nós de votação. Para saber mais sobre a opção w, consulte Write Concern no manual do MongoDB Server.

mongoc_uri_t *uri = mongoc_uri_new("mongodb+srv://localhost:27017/?w=2");

O componente wtimeoutms da preocupação de gravação, que especifica um limite de tempo para a preocupação de gravação. Para saber mais sobre a opção wtimeout, consulte Write Concern no manual do MongoDB Server.

mongoc_uri_t *uri = mongoc_uri_new("mongodb+srv://localhost:27017/?wTimeoutMS=5000");

O componente j do preocupação de gravação, que solicita a confirmação de que as instâncias do MongoDB foram escritas no diário no disco. O valor padrão depende do valor na configuração writeConcernMajorityJournalDefault. Para saber mais sobre a opção j, consulte Write Concern no manual do MongoDB Server.

mongoc_uri_t *uri = mongoc_uri_new("mongodb+srv://localhost:27017/?journal=true");

O nível de preocupação de leitura do cliente. Para obter mais informações, consulte a referência preocupação de leitura no manual do MongoDB Server.

mongoc_uri_t *uri = mongoc_uri_new("mongodb+srv://localhost:27017/?readConcernLevel=local");

As configurações de preferência de leitura padrão do cliente. O valor padrão é primary. Consulte preferência de leitura no manual do MongoDB Server para obter mais informações.

mongoc_uri_t *uri = mongoc_uri_new("mongodb+srv://localhost:27017/?readPreference=primaryPreferred");

Máximo de segundos de atraso representa o maior atraso de replicação, em tempo real, que um secundário pode enfrentar e ainda ser qualificado para seleção de servidor . O menor valor permitido para maxStalenessSeconds é 90 segundos. Esta opção deve ser usada com uma preferência de leitura não primária.

mongoc_uri_t *uri = mongoc_uri_new("mongodb+srv://localhost:27017/?readPreference=secondary&maxStalenessSeconds=120");

A janela de latência para elegibilidade do servidor . Se a viagem de ida e volta de um servidor demorar mais do que o tempo de ida e volta do servidor mais rápido mais esse valor, o servidor não estará qualificado para seleção. O valor padrão é 15 milissegundos.

mongoc_uri_t *uri = mongoc_uri_new("mongodb+srv://localhost:27017/?localThresholdMS=150");

O mecanismo que o driver usa para autenticar no MongoDB Server. Se você não especificar um mecanismo de autenticação, o driver usará SCRAM-SHA-1 ou SCRAM-SHA-256, dependendo da versão do servidor . Para saber mais sobre os mecanismos de autenticação disponíveis, consulte o Mecanismos de autenticação ou o guia Mecanismos de autenticação empresarial.

mongoc_uri_t *uri = mongoc_uri_new("mongodb+srv://localhost:27017/?authSource=admin&authMechanism=GSSAPI");

O intervalo entre as verificações de monitoramento do servidor . Deve ser maior ou igual a 500 milissegundos. O valor padrão é 10000 ms (10 segundos) no modo agrupado (multithreaded) e 60000 ms (60 segundos) no modo não agrupado (single-threaded).

mongoc_uri_t *uri = mongoc_uri_new("mongodb+srv://localhost:27017/?heartbeatFrequencyMS=5000");

O período de tempo em que o driver tenta selecionar um servidor antes de atingir o tempo limite. O valor padrão é 30000 ms (30 segundos).

mongoc_uri_t *uri = mongoc_uri_new("mongodb+srv://localhost:27017/?serverSelectionTimeoutMS=40000");

Aplica-se apenas a clientes de thread único. Se um soquete não tiver sido usado dentro desse período, o driver verificará a conexão com um rápido "chamar" de "olá" antes de ser usado novamente. O padrão é 5000 ms (5 segundos).

mongoc_uri_t *uri = mongoc_uri_new("mongodb+srv://localhost:27017/?socketCheckIntervalMS=10000");

Permite leituras que podem ser repetidas. O valor padrão é true.

mongoc_uri_t *uri = mongoc_uri_new("mongodb+srv://localhost:27017/?retryReads=false");

Habilita gravações que podem ser tentadas novamente. O valor padrão é true.

mongoc_uri_t *uri = mongoc_uri_new("mongodb+srv://localhost:27017/?retryWrites=false");

Observação

Descarte de carga no Intelligent Gerenciamento de Carga de Trabalho (IWM)

Se erros com os rótulos SystemOverloadedError ou RetryableError estiverem causando falhas em seu aplicativo ou aparecendo em seus logs de aplicativo, o Load Shedding pode estar ativo em seu cluster e seu driver pode não ter sido atualizado para uma versão que o suporte. Recomendamos atualizar seu driver MongoDB C para a versão 2.3 ou posterior. Se você continuar a ver esses erros após a atualização, poderá resolvê-los por meio de alterações no lado do servidor, como revisar sua configuração de Load Shedding, ou por meio de alterações no lado do aplicativo, como implementar tratamento de erros personalizado ou limitação de solicitação do lado do cliente. Dependendo da sua situação, as alterações no lado do aplicativo podem ser preferíveis ou necessárias.

O Load Shedding é um recurso do IWM e ajuda a gerenciar a carga do servidor rejeitando operações em excesso durante a sobrecarga sustentada. Este recurso está disponível no MongoDB 9.0 e posterior.

Para obter mais informações sobre IWM ou como lidar com erros de sobrecarga, consulte a página Gerenciamento inteligente de carga de trabalho ou a página Erros de sobrecarga na documentação do Atlas.

O nome do aplicativo que o driver passa para o servidor nos metadados do cliente como parte da confirmação de conexão. O servidor imprime esse valor no log do MongoDB assim que estabelece a conexão. O valor também é registrado nos registros de consulta lentos e coleções de perfil. O valor padrão está vazio.

mongoc_uri_t *uri = mongoc_uri_new("mongodb+srv://localhost:27017/?appName=yourAppName");

Especifica se o driver está se conectando a um balanceador de carga . Você pode definir esta propriedade como true somente se todas as seguintes condições forem atendidas:

  • Você especifica apenas um nome de host

  • Você não está conectando a um conjunto de réplicas

  • Você não está usando a propriedade SrvMaxHosts

  • Você não está usando a propriedade DirectConnection

O valor padrão é false.

mongoc_uri_t *uri = mongoc_uri_new("mongodb+srv://localhost:27017/?loadBalanced=true");

O maior número de resultados SRV a serem selecionados aleatoriamente ao preencher inicialmente a lista de sementes ou, durante a sondagem SRV, adicionar novos hosts à topologia. O valor padrão é 0.

Você pode usar esta propriedade somente se o esquema de cadeia de conexão estiver definido como ConnectionStringScheme.MongoDBPlusSrv. Você não pode usá-lo ao conectar-se a um conjunto de réplicas.

mongoc_uri_t *uri = mongoc_uri_new("mongodb+srv://localhost:27017/?srvMaxHosts=5");

Para obter mais informações sobre os tipos usados nesta página, consulte a seguinte documentação da API: