Opções de conexão
Visão geral
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.
Opções
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 |
| Especifica o número de milissegundos que uma única operação executada no |
connectTimeoutMS | inteiro |
| Especifica o tempo em milissegundos para tentar uma conexão antes de atingir o tempo limite. |
maxPoolSize | inteiro |
| Define o limite máximo de conexões que um pool de conexões pode ter em um determinado momento. |
replicaSet | string |
| 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 |
| 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 é |
minPoolSize | inteiro |
| Especifica o número mínimo de conexões que o driver mantém em um único pool de conexões. |
serverSelectionTimeoutMS | inteiro |
| Especifica o número de milissegundos de espera para encontrar um servidor disponível e adequado para executar uma operação. |
heartbeatFrequencyMS | inteiro |
| Define o intervalo de tempo em milissegundos para esperar, entre cada verificação periódica do servidor em segundo plano. |
tls | booleano |
| Especifica se uma conexão TLS (Transport Layer Security) deve ser estabelecida com a instância. Isso é automaticamente definido como |
w | string ou inteiro |
| 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 |
| 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.
Definição de tempo limite único
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.
Exemplos de tempo limite
Esta seção fornece exemplos que demonstram diferentes maneiras de definir um tempo limite em seu aplicação.
Opção do cliente
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)
Opção de connection string
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)
Tempo limite da operação
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}})