Menu Docs
Página inicial do Docs
/ / /
Driver GO
/ /

Opções de conexão

Nesta página

  • Visão geral
  • Opções
  • Definição de tempo limite único
  • Exemplos de tempo limite

Este guia explica várias opções comuns de conexão e autenticação do MongoDB . Você pode passar as opções de conexão como parâmetros no URI de conexão para especificar o comportamento do cliente.

A tabela a seguir descreve as opções de conexão que você pode definir em seu URI de conexão. Cada entrada fornece o nome da opção, tipo de valor, valor padrão e uma descrição da opção.

Nome da opção
Tipo
Valor padrão
Descrição

timeoutMS

inteiro

null

Especifica o número de milissegundos que uma única operação executada no Client pode levar antes de retornar um erro de tempo limite. As operações honram esta configuração somente quando não há prazo no contexto da operação.

connectTimeoutMS

inteiro

30000

Especifica o tempo em milissegundos para tentar uma conexão antes de atingir o tempo limite.

maxPoolSize

inteiro

100

Define o limite máximo de conexões que um pool de conexões pode ter em um determinado momento.

replicaSet

string

null

Especifica o nome do conjunto de réplicas para o cluster. Todos os nós no conjunto de réplicas precisam ter o mesmo nome do conjunto de réplicas, caso contrário o cliente não os considerará como parte do conjunto.

maxIdleTimeMS

inteiro

0

Define o limite de tempo máximo que uma conexão pode ficar inativa no pool de conexões antes de ser eliminada e fechada. O padrão é 0, o que significa que uma conexão pode ficar inativa por tempo indeterminado.

minPoolSize

inteiro

0

Especifica o número mínimo de conexões que o driver mantém em um único pool de conexões.

serverSelectionTimeoutMS

inteiro

30000

Especifica o número de milissegundos de espera para encontrar um servidor disponível e adequado para executar uma operação.

heartbeatFrequencyMS

inteiro

10000

Define o intervalo de tempo em milissegundos para esperar, entre cada verificação periódica do servidor em segundo plano.

tls

booleano

false

Especifica se uma conexão TLS (Transport Layer Security) deve ser estabelecida com a instância. Isso é automaticamente definido como true ao usar um seedlist de DNS (SRV) na cadeia de conexão. Você pode substituir esse comportamento definindo o valor como false.

w

string ou inteiro

null

Define a preocupação de gravação. Para saber mais sobre os valores, consulte a documentação do servidor sobre opções de write concern.

directConnection

booleano

false

Especifica se todas as operações devem ser forçadas a serem despachadas para o host especificado no URI de conexão.

Para obter uma lista completa das opções de conexão, consulte a documentação da API ClientOptions.

Você pode definir uma única opção Timeout em sua instância Client para especificar o tempo máximo que uma única operação pode levar para ser executada.

Defina um tempo limite no nível do cliente chamando o método SetTimeout() ao especificar opções para sua instância Client ou especificando a opção timeoutMS em seu URI de conexão. Por padrão, todas as instâncias Database, Collection, Session, ChangeStream e Bucket em outras partes do seu aplicação herdam a opção Timeout de Client se você não definir um tempo limite diferente em operações específicas no contexto da operação.

Se você definir um tempo limite em um contexto passado para uma operação, o driver usará esse valor para a operação. Se você não especificar um timeout de contexto, a operação Contexto derivará o timeout da instância Client.

Observação

Novas tentativas com especificação de tempo limite

Se você definir um tempo limite no seu Client ou em um contexto de nível de operação e o servidor retornar um erro repetível, o driver tentará novamente a operação quantas vezes forem possíveis antes que o tempo limite expire.

Quando o tempo limite expira, o driver retorna um erro de tempo limite.Consulte o manual do servidor para obter mais informações sobre leituras e gravações repetíveis.

Esta seção fornece exemplos que demonstram diferentes maneiras de definir um tempo limite em seu aplicação.

O código a seguir mostra como definir a opção Timeout em um Client usando o método SetTimeout():

opts := options.Client().SetTimeout(5 * time.Second)
client, err := mongo.Connect(opts)

O exemplo a seguir mostra como definir um tempo limite único usando a opção timeoutMS URI . Em seguida, o código executa uma operação de inserção que herda o tempo limite:

uri := "mongodb://user:pass@sample.host:27017/?timeoutMS=5000"
client, err := mongo.Connect(options.Client().ApplyURI(uri))
...
coll.InsertOne(context.Background(), doc)

O exemplo a seguir mostra como definir um tempo limite de nível de operação em um Contexto, que tem prioridade sobre um tempo limite de nível de cliente que você pode ter definido:

ctx, cancel := context.WithTimeout(context.TODO(), time.Second)
defer cancel()
res, err := coll.InsertOne(ctx, bson.D{{"x", 2}})

Voltar

Guia de conexão