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.
Menu Docs

Especificar opções de conexão

Esta página descreve as opções de conexão disponíveis no driver .NET/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 um URI de conexão para o construtor MongoClient, poderá incluir opções de conexão na cadeia de caracteres como pares <name>=<value>. No exemplo a seguir, o URI de conexão contém a opção connectTimeoutMS com um valor de 60000 e a opção tls com um valor de true:

const string uri = "mongodb+srv:/localhost:27017/?connectTimeoutMS=60000&tls=true";

To learn more about the options that you can specify in a connection URI, see Connection String Options in the MongoDB Server manual.

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

Para definir opções de conexão em um objeto MongoClientSettings, execute as seguintes etapas:

  1. Crie uma instância da classe MongoClientSettings

  2. Definir propriedades na instância para configurar a conexão

  3. Passe a instância para o construtor MongoClient

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

var settings = new MongoClientSettings()
{
Scheme = ConnectionStringScheme.MongoDBPlusSrv,
Server = new MongoServerAddress("localhost", 27017),
ConnectTimeout = TimeSpan.FromMilliseconds(60000),
UseTls = true
};
var client = new MongoClient(settings);

Você também pode criar um objeto MongoClientSettings a partir de uma string de conexão chamando o método MongoClientSettings.FromConnectionString() e passando a string de conexão, conforme mostrado no exemplo a seguir. Isso é útil se você já tiver uma string de conexão , mas quiser modificar algumas configurações programaticamente, ou se precisar especificar configurações que não estão disponíveis na string de conexão.

const string connectionUri = "mongodb+srv://localhost:27017/?connectTimeoutMS=60000&tls=true";
var settings = MongoClientSettings.FromConnectionString(connectionUri);
settings.ServerApi = new ServerApi(ServerApiVersion.V1);
var client = new MongoClient(settings);

Como alternativa, você pode criar um objeto MongoClientSettings a partir de um objeto MongoUrl chamando o método MongoClientSettings.FromUrl() e passando o objeto MongoUrl , conforme mostrado no exemplo a seguir. Isso é útil se você já tiver um objeto MongoUrl, mas quiser especificar configurações que não estão disponíveis na classe MongoUrl.

const string connectionUri = "mongodb+srv://localhost:27017/?connectTimeoutMS=60000&tls=true";
var url = new MongoUrl(connectionUri);
var settings = MongoClientSettings.FromUrl(url);
settings.ServerApi = new ServerApi(ServerApiVersion.V1);
var client = new MongoClient(settings);

Você pode utilizar um objeto MongoUrlBuilder para criar e configurar configurações de conexão em um objeto MongoUrl. Um MongoUrl é uma representação fortemente digitada de um URI de conexão e é útil ao ler um URI de conexão diretamente de outra fonte. O uso de um objeto MongoUrl tem muitas das mesmas vantagens que o uso de um objeto MongoClientSettings, embora as duas classes contenham propriedades e métodos diferentes.

Para utilizar um objeto MongoUrlBuilder, crie uma instância da classe e defina as propriedades de configuração necessárias. Para criar um objeto MongoUrl a partir de MongoUrlBuilder, chame o método MongoUrlBuilder.ToMongoUrl(). Você pode passar o objeto MongoUrl para o construtor MongoClient. O seguinte exemplo de código mostra este processo:

const string connectionUri = "mongodb+srv://localhost:27017/?connectTimeoutMS=60000&tls=true";
var builder = new MongoUrlBuilder(connectionUri)
{
ServerMonitoringMode = MongoDB.Driver.Core.Servers.ServerMonitoringMode.Stream
};
var url = builder.ToMongoUrl();
var client = new MongoClient(url);

As seções a seguir descrevem as opções de conexão disponíveis no driver .NET/C# e como especificá-las usando um objeto MongoClientSettings ou MongoUrlBuilder.

Specifies whether to force dispatch all operations to the host. If you specify this option, the driver doesn't accept the DNS seed list connection format. You must use the standard connection URI format instead. The default value is false.

Esta propriedade deve ser configurada para false se você especificar mais de um nome de host.

var settings = new MongoClientSettings
{
DirectConnection = true,
};

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

var settings = new MongoClientSettings
{
ReplicaSetName = "yourReplicaSet",
};

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.

Se esta propriedade estiver definida como true e SslSettings.CheckCertificateRevocation estiver definido como false, o driver .NET/C# lançará uma exceção.

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

var settings = new MongoClientSettings
{
AllowInsecureTls = 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.

Se SslSettings.CheckCertificateRevocation estiver definido como false e AllowInsecureTls estiver definido como true, o driver .NET/C# lançará uma exceção.

var settings = new MongoClientSettings();
settings.SslSettings = new SslSettings()
{
CheckCertificateRevocation = false,
ClientCertificateSelectionCallback = new LocalCertificateSelectionCallback() { ... },
ClientCertificates = new List<X509Certificate>() { ... },
EnabledSslProtocols = SslProtocols.Tls13,
ServerCertificateValidationCallback = new RemoteCertificateValidationCallback() { ... }
};

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.

var settings = new MongoClientSettings
{
UseTls = true,
};

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 é 30 segundos.

var settings = new MongoClientSettings
{
ConnectTimeout = TimeSpan.FromSeconds(60),
};

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.

var settings = new MongoClientSettings
{
ConnectTimeout = TimeSpan.FromSeconds(60),
};

Os tipos de compactação preferidos, em ordem, para mensagens de protocolo de transmissão enviadas ou recebidas do servidor. O driver usa o primeiro desses tipos de compactação que o servidor suporta. O valor padrão é null.

var settings = new MongoClientSettings
{
Compressors = new List<CompressorConfiguration>()
{
new(CompressorType.Zlib),
new(CompressorType.Snappy)
}
};

O maior número de conexões que o pool de conexões de um driver pode estar estabelecendo simultaneamente. O valor padrão é 2.

var settings = new MongoClientSettings
{
MaxConnecting = 3,
};

O período de tempo que uma conexão pode ficar inativa antes que o driver a feche. O valor padrão é 10 minutos.

var settings = new MongoClientSettings
{
MaxConnectionIdleTime = TimeSpan.FromMinutes(8),
};

O período de tempo em que uma conexão pode ser agrupada antes de expirar. O valor padrão é 30 minutos.

var settings = new MongoClientSettings
{
MaxConnectionLifeTime = TimeSpan.FromMinutes(40),
};

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.

var settings = new MongoClientSettings
{
MaxConnectionPoolSize = 150,
};

O número de conexões que o driver cria e mantém no pool de conexões mesmo quando nenhuma operação está ocorrendo. Esta contagem inclui conexões em uso. O valor padrão é 0.

var settings = new MongoClientSettings
{
MinConnectionPoolSize = 3,
};

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. O valor padrão é dois minutos.

var settings = new MongoClientSettings
{
WaitQueueTimeout = TimeSpan.FromSeconds(30),
};

As configurações padrão de write concern, incluindo tempo limite de escrita e registro no diário para o cliente. O valor padrão é WriteConcern.Acknowledged. Consulte Write Concern no manual do MongoDB Server para obter mais informações.

var settings = new MongoClientSettings();
settings.WriteConcern = MongoDB.Driver.WriteConcern.Acknowledged;
settings.WriteConcern = new WriteConcern(
w: 1,
wTimeout: new TimeSpan(0, 0, 0, 30, 0),
fsync: true,
journal: true
);

A read concern do cliente. O valor padrão é ReadConcern.Default. Para obter mais informações, consulte Read Concern no manual do MongoDB Server.

var settings = new MongoClientSettings
{
ReadConcern = MongoDB.Driver.ReadConcern.Local,
};

The client's default read-preference settings. MaxStaleness represents the longest replication lag, in wall-clock time, that a secondary can experience and still be eligible for server selection. The default value is ReadPreference.Primary. Specifying -1 means no maximum. See Read Preference in the MongoDB Server manual for more information.

var settings = new MongoClientSettings
{
ReadPreference = MongoDB.Driver.ReadPreference.PrimaryPreferred,
};

Configurações de como o driver se autentica no servidor. Isso inclui credenciais de autenticação, mecanismo, fonte e outras configurações. O valor padrão é null.

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 . Consulte Mecanismos de autenticação para ver os mecanismos de autenticação disponíveis.

var settings = new MongoClientSettings
{
Credential = MongoCredential.CreatePlainCredential(
databaseName: "admin",
username: "user",
password: "password"
)
};

O intervalo entre verificações regulares de monitoramento do servidor. Deve ser maior ou igual a 500 milissegundos. O valor padrão é 10000 milésimos de segundo (10 segundos).

var settings = new MongoClientSettings
{
HeartbeatInterval = TimeSpan.FromSeconds(5)
};

O período de tempo em que um soquete de monitoramento pode ficar inativo antes de atingir o tempo limite. O valor padrão é o valor da propriedade ConnectTimeout .

var settings = new MongoClientSettings
{
HeartbeatTimeout = TimeSpan.FromSeconds(5)
};

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.

var settings = new MongoClientSettings
{
LocalThreshold = TimeSpan.FromSeconds(15)
};

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.

var settings = new MongoClientSettings
{
ServerSelectionTimeout = TimeSpan.FromSeconds(30)
};

A codificação UTF-8 a ser usada para desserialização de string. O valor padrão é codificação estrita, em que o driver lança uma exceção quando encontra uma sequência de bytes UTF-8 inválida

var settings = new MongoClientSettings
{
ReadEncoding = new UTF8Encoding(
encoderShouldEmitUTF8Identifier: false,
throwOnInvalidBytes: true)
};

A codificação UTF-8 a ser usada para serialização de string. O valor padrão é codificação estrita, em que o driver lança uma exceção quando encontra uma sequência de bytes UTF-8 inválida

var settings = new MongoClientSettings
{
WriteEncoding = new UTF8Encoding(
encoderShouldEmitUTF8Identifier: false,
throwOnInvalidBytes: true)
};

Observação

Somente configurações do MongoClient

As propriedades ReadEncoding e WriteEncoding estão disponíveis somente na classe MongoClientSettings.

Allows opting into Stable API versioning. The default value is null. See Stable API in the MongoDB Server manual for more information about Stable API versioning.

var settings = new MongoClientSettings
{
ServerApi = new ServerApi(
ServerApiVersion.V1,
strict: true,
deprecationErrors: true),
};

Observação

Somente configurações do MongoClient

A propriedade ServerApi está disponível somente na classe MongoClientSettings.

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

var settings = new MongoClientSettings
{
RetryReads = false,
};

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

var settings = new MongoClientSettings
{
RetryWrites = false,
};

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 nos registros do MongoDB quando a conexão é estabelecida. O valor também é registrado nos registros de consulta lentos e coleções de perfil. O valor padrão é null.

var settings = new MongoClientSettings
{
ApplicationName = "yourAppName",
};

Configurações para criptografia automática do lado do cliente . O valor padrão é null. Para saber mais sobre criptografia do lado do cliente, consulte criptografia em execução.

var settings = new MongoClientSettings
{
AutoEncryptionOptions = new AutoEncryptionOptions(
keyVaultNamespace: new CollectionNamespace(
databaseName: "keyvault",
collectionName: "datakeys"),
kmsProviders: new Dictionary<string, IReadOnlyDictionary<string, object>> ()
{
{ "local", new Dictionary<string, object> () { { "key", "<base64-encoded-key>" } } }
}
),
};

Opções de configuração de baixo nível para soquetes, TLS, cluster e outros. O valor padrão é null.

var settings = new MongoClientSettings
{
ClusterConfigurator = builder =>
{
builder
.Subscribe<ClusterOpenedEvent>(e =>
{
Console.WriteLine($"Cluster opened: Cluster ID = {e.ClusterId}");
})
.Subscribe<ClusterDescriptionChangedEvent>(e =>
{
Console.WriteLine($"Cluster description changed: {e.NewDescription}");
});
}
};

Especifica se o endereço de host está no formato IPv6. O valor padrão é false.

var settings = new MongoClientSettings
{
IPv6 = true,
};

Uma opção somente leitura que indica se as configurações foram congeladas. Você não pode alterar configurações congeladas. O valor padrão é false.

var settings = new MongoClientSettings();
if (!settings.IsFrozen)
{
settings.RetryReads = false;
}

Dica

Congelar configurações

Você pode congelar as configurações em um objeto MongoClientSettings chamando seu método Freeze(). Isso evita mais alterações nas configurações.

Como alternativa, você pode chamar o método FrozenCopy() para criar um novo objeto MongoClientSettings com as configurações atuais congeladas.

O nome e a versão de uma biblioteca personalizada criada no driver .NET/C#. O condutor envia estas informações para o servidor.

var settings = new MongoClientSettings
{
LibraryInfo = new LibraryInfo("customLibraryName", "1.0.0")
};

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.

var settings = new MongoClientSettings
{
LoadBalanced = true,
};

As configurações usadas para registro.O valor padrão é null.

var settings = new MongoClientSettings
{
LoggingSettings = new LoggingSettings(
LoggerFactory.Create(l =>
l.SetMinimumLevel(LogLevel.Debug)))
};

Especifica se o formato de string de conexão padrão (MongoDB) ou o formato de lista de sementes do DNS (MongoDBPlusSrv) deve ser usado. Os valores disponíveis para esta propriedade são definidos no enumeração ConnectionStringScheme . O valor padrão é ConnectionStringScheme.MongoDB. Consulte Connection strings no manual do MongoDB Server para obter mais informações sobre formatos de string de conexão .

Se a propriedade DirectConnection estiver definida como true e você tentar usar o formato de lista de sementes DNS, o driver .NET/C# lançará uma exceção.

var settings = new MongoClientSettings
{
Scheme = ConnectionStringScheme.MongoDBPlusSrv,
};

O host e o número da porta onde o MongoDB está sendo executado. O valor padrão é localhost:27017.

var settings = new MongoClientSettings
{
Server = new MongoServerAddress("localhost", 27017)
};

Especifica o protocolo de monitoramento do servidor a ser usado. Os valores disponíveis para esta propriedade são definidos no enumeração ServerMonitoringMode. O valor padrão é Auto.

Quando essa opção é definida como Auto, o modo de monitoramento é determinado pelo ambiente em que o driver está sendo executado. O driver usa o modo de sondagem em ambientes de função como serviço (FaaS), como o Amazon Web Services Lambda, e o modo de streaming em outros ambientes.

var settings = new MongoClientSettings
{
ServerMonitoringMode = MongoDB.Driver.Core.Servers.ServerMonitoringMode.Stream
};

Os membros do cluster onde MongoDB está em execução. O valor padrão é localhost:27017.

var settings = new MongoClientSettings
{
Servers = new List<MongoServerAddress>()
{
new ("localhost", 27017),
new ("localhost", 27018)
}
};

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.

var settings = new MongoClientSettings
{
SrvMaxHosts = 5
};

O nome do serviço dos registros de recursos SRV que o driver recupera para construir sua lista de sementes. O driver utiliza o nome do serviço para criar o URI SRV, que corresponde ao seguinte formato:

_{srvServiceName}._tcp.{hostname}.{domainname}

Essa propriedade substitui o nome do serviço padrão para pesquisa de SRV na descoberta e na pesquisa. O valor padrão é "mongodb".

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.

var settings = new MongoClientSettings
{
SrvServiceName = "yourServiceName"
};

Especifica opções, como a versão do MongoDB Server , para traduzir queries do LINQ para a API de query. O valor padrão é null.

var settings = new MongoClientSettings
{
TranslationOptions = new ExpressionTranslationOptions()
{
CompatibilityLevel = ServerVersion.Server80,
EnableClientSideProjections = true
}
};

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