Visão geral
Esta página descreve as opções de conexão disponíveis no driver Go e explica como aplicá-las à sua conexão MongoDB.
Como especificar opções de conexão
As seções a seguir descrevem como você pode especificar opções de conexão usando uma string de conexão ou uma estrutura ClientOptions.
Use a string de conexão
Você pode especificar opções de conexão em uma string de conexão passando uma estrutura ClientOptions para o método Connect(). Na string de conexão, você pode incluir opções de conexão na string como pares <name>=<value>. No exemplo a seguir, a string de conexão contém a opção connectTimeoutMS com um valor de 60000 milissegundos e a opção tls com um valor de true:
const uri = "mongodb+srv://localhost:27017/?connectTimeoutMS=60000&tls=true" client, _ := mongo.Connect(options.Client().ApplyURI(uri))
Use a estrutura ClientOptions
Você também pode encadear opções de conexão ao struct ClientOptions para configurar as definições 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 a string de conexão.
O exemplo de código a seguir define a opção Timeout como 60 segundos e habilita o TLS passando uma estrutura tls.Config vazia para o método SetTLSConfig():
opts := options.Client(). SetConnectTimeout(60 * time.Second). SetTLSConfig(&tls.Config{}) client, _ := mongo.Connect(opts)
Opções de conjunto de réplicas
Conexão direta
Specifies whether to force dispatch all operations to the host. If you specify this option, the driver doesn't accept the SRV connection format. You must use the standard connection URI format instead. To learn more about the SRV connection and the standard connection formats, see the Connection Strings guide in the MongoDB Server manual.
Esta propriedade deve ser configurada para false se você especificar mais de um nome de host.
Tipo de Dados: bool
Valor padrão: false
Exemplo:
const uri = "mongodb://localhost:27017/?directConnection=true" client, _ := mongo.Connect(options.Client().ApplyURI(uri))
Conjunto de réplicas
O nome do conjunto de réplicas a que se conectar.
Tipo de Dados: string
Valor padrão: nil
Exemplo:
const uri = "mongodb://localhost:27017/?replicaSet=yourReplicaSet" client, _ := mongo.Connect(options.Client().ApplyURI(uri))
Conexão direta
Specifies whether to force dispatch all operations to the host. If you specify this option, the driver doesn't accept the SRV connection format. You must use the standard connection URI format instead. To learn more about the SRV connection and the standard connection formats, see the Connection Strings guide in the MongoDB Server manual.
Esta propriedade deve ser configurada para false se você especificar mais de um nome de host.
Tipo de Dados: bool
Valor padrão: false
Exemplo:
opts := options.Client(). SetDirect(true) client, _ := mongo.Connect(opts)
Conjunto de réplicas
O nome do conjunto de réplicas a que se conectar.
Tipo de Dados: string
Valor padrão: nil
Exemplo:
opts := options.Client(). SetReplicaSet("yourReplicaSet") client, _ := mongo.Connect(opts)
Opções de TLS
Habilitar TLS
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.
Tipo de Dados: bool
Valor padrão: nil
Exemplo:
const uri = "mongodb://localhost:27017/?tls=true" client, _ := mongo.Connect(options.Client().ApplyURI(uri))
Habilitar TLS
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.
Tipo de Dados: tls.Config
Valor padrão: false
Exemplo:
opts := options.Client(). SetTLSConfig(&tls.Config{}) client, _ := mongo.Connect(opts)
Para obter mais informações sobre as opções de TLS, consulte o guia Habilitar TLS em uma conexão.
Opções de tempo limite
ConnectTimeout
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.
Tipo de dados: intnão negativo
Valor padrão: 30000 Milissegundos
Exemplo:
const uri = "mongodb://localhost:27017/?connectTimeoutMS=60000" client, _ := mongo.Connect(options.Client().ApplyURI(uri))
Tempo-limite
A quantidade de tempo que uma única operação executada no cliente pode ser executada antes de retornar um erro.
Tipo de dados: intnão negativo
Valor padrão: nil
Exemplo:
const uri = "mongodb://localhost:27017/?timeoutMS=30000" client, _ := mongo.Connect(options.Client().ApplyURI(uri))
ConnectTimeout
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.
Tipo de Dados: time.Duration
Valor padrão: 30 Segundos
Exemplo:
opts := options.Client(). SetConnectTimeout(60 * time.Second) client, _ := mongo.Connect(opts)
Tempo-limite
A quantidade de tempo que uma única operação executada no cliente pode ser executada antes de retornar um erro.
Tipo de Dados: time.Duration
Valor padrão: nil
Exemplo:
opts := options.Client(). SetTimeout(30 * time.Second) client, _ := mongo.Connect(opts)
Opções de compressão
Compressores
Os tipos de compactação preferidos, em ordem, para mensagens de wire protocol enviadas ou recebidas do servidor. Você pode habilitar "snappy", "zlib" e "zstd" como dependências opcionais do tempo de compilação. O driver usa o primeiro desses tipos de compactação compatíveis com o servidor.
Tipo de Dados: string (valores separados por vírgula)
Valor padrão: nil
Exemplo:
const uri = "mongodb://localhost:27017/?compressors=zlib,snappy" client, _ := mongo.Connect(options.Client().ApplyURI(uri))
zlibNível de compactação
O nível de compactação para zlib usar. Essa opção é ignorada se zlib não for especificado como um compressor por meio de ApplyURI ou SetCompressors. Esta opção aceita um valor inteiro entre -1 e 9:
-1: (padrão).zlibusa seu nível de compactação padrão (geralmente6).0: Sem compactação.1: Velocidade mais rápida, mas menor compactação.9: Melhor compactação, mas velocidade mais lenta.
Tipo de Dados: int
Valor padrão: -1
Exemplo:
const uri = "mongodb://localhost:27017/?compressors=zlib&zlibCompressionLevel=6" client, _ := mongo.Connect(options.Client().ApplyURI(uri))
Nível de compactação Zstandard
O nível de compactação para zstd usar. Essa opção é ignorada se zstd não for especificado como um compressor por meio de ApplyURI ou SetCompressors. Essa opção aceita valores inteiros entre 1 e 20:
1: Velocidade mais rápida, mas menor compactação.20: Melhor compactação, mas velocidade mais lenta.
Tipo de Dados: int
Valor padrão: 6
Exemplo:
const uri = "mongodb://localhost:27017/?compressors=zstd&zstdCompressionLevel=6" client, _ := mongo.Connect(options.Client().ApplyURI(uri))
Compressores
Os tipos de compactação preferidos, em ordem, para mensagens de wire protocol enviadas ou recebidas do servidor. Você pode habilitar "snappy", "zlib" e "zstd" como dependências opcionais do tempo de compilação. O driver usa o primeiro desses tipos de compactação compatíveis com o servidor.
Tipo de Dados: []string
Valor padrão: nil
Exemplo:
opts := options.Client(). SetCompressors([]string{"zlib", "snappy"}) client, _ := mongo.Connect(opts)
zlibNível de compactação
O nível de compactação para zlib usar. Essa opção é ignorada se zlib não for especificado como um compressor por meio de ApplyURI ou SetCompressors. Esta opção aceita um valor inteiro entre -1 e 9:
-1: (Padrão).
zlibusa seu nível de compactação padrão (geralmente6).0: sem compressão.
1: velocidade mais rápida, mas menor compressão.
9: a melhor compactação, mas a velocidade mais lenta.
Tipo de Dados: int
Valor padrão: -1
Exemplo:
opts := options.Client(). SetCompressors([]string{"zlib"}). SetZlibLevel(6) client, _ := mongo.Connect(opts)
Nível de compactação Zstandard
O nível de compactação para zstd usar. Essa opção é ignorada se zstd não for especificado como um compressor por meio de ApplyURI ou SetCompressors. Essa opção aceita valores inteiros entre 1 e 20:
Tipo de Dados: int
Valor padrão: 6
Exemplo:
opts := options.Client(). SetCompressors([]string{"zstd"}). SetZstdLevel(8) client, _ := mongo.Connect(opts)
For more information on compression, see the Compress Network Traffic guide.
Opções do pool de conexões
maxPoolSize
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.
Tipo de dados: intnão negativo
Valor padrão: 100
Exemplo:
const uri = "mongodb://localhost:27017/?maxPoolSize=150" client, _ := mongo.Connect(options.Client().ApplyURI(uri))
minPoolSize
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.
Tipo de dados: intnão negativo
Valor padrão: 0
Exemplo:
const uri = "mongodb://localhost:27017/?minPoolSize=3" client, _ := mongo.Connect(options.Client().ApplyURI(uri))
MaxConnectionIdleTime
O período de tempo que uma conexão pode ficar inativa antes que o driver a feche.
Tipo de dados: intnão negativo
Valor padrão: 0
Exemplo:
const uri = "mongodb://localhost:27017/?maxIdleTimeMS=8000" client, _ := mongo.Connect(options.Client().ApplyURI(uri))
maxConnecting
O número máximo de conexões que um pool de conexões pode estabelecer simultaneamente.
Tipo de dados: intnão negativo
Valor padrão: 2
Exemplo:
const uri = "mongodb://localhost:27017/?maxConnecting=3" client, _ := mongo.Connect(options.Client().ApplyURI(uri))
maxPoolSize
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.
Tipo de dados: uint64não negativo
Valor padrão: 100
Exemplo:
opts := options.Client(). SetMaxPoolSize(150) client, _ := mongo.Connect(opts)
minPoolSize
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.
Tipo de dados: uint64não negativo
Valor padrão: 0
Exemplo:
opts := options.Client(). SetMinPoolSize(3) client, _ := mongo.Connect(opts)
MaxConnectionIdleTime
O período de tempo que uma conexão pode ficar inativa antes que o driver a feche.
Tipo de Dados: time.Duration
Valor padrão: 0
Exemplo:
opts := options.Client(). SetMaxConnIdleTime(8 * time.Second) client, _ := mongo.Connect(opts)
maxConnecting
O número máximo de conexões que um pool de conexões pode estabelecer simultaneamente.
Tipo de dados: uint64não negativo
Valor padrão: 2
Exemplo:
opts := options.Client(). SetMaxConnecting(3) client, _ := mongo.Connect(opts)
Para saber mais sobre pool de conexões, consulte o Guia de pool de conexões.
Opções de write concern
Escreva preocupação
O componente w da write concern, 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.
Tipo de Dados: int ou string
Valor padrão: 1 ou "majority"
Exemplo:
const uri = "mongodb://localhost:27017/?w=2" client, _ := mongo.Connect(options.Client().ApplyURI(uri))
Escreva preocupação
O componente w da write concern, 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.
Tipo de Dados: writeconcern.WriteConcern
Valor padrão: 1 ou "majority"
Exemplo:
wc := &writeconcern.WriteConcern{ W: 2, } opts := options.Client().SetWriteConcern(wc) client, _ := mongo.Connect(opts)
Opções de read concern
Read concern
O nível de read concern do cliente. Para obter mais informações, consulte a referência read concern no manual do MongoDB Server.
Tipo de Dados: string
Valor padrão: local
Exemplo:
const uri = "mongodb://localhost:27017/?readConcernLevel=majority" client, _ := mongo.Connect(options.Client().ApplyURI(uri))
Read concern
O nível de read concern do cliente. Para obter mais informações, consulte a referência read concern no manual do MongoDB Server.
Tipo de Dados: readconcern.ReadConcern
Valor padrão: nil
Exemplo:
opts := options.Client(). SetReadConcern(readconcern.Majority()) client, _ := mongo.Connect(opts)
Opções de read preference
readPreference
The client's default read-preference settings. See Read Preference in the MongoDB Server manual for more information.
Tipo de Dados: string
Valor padrão: primary
Exemplo:
const uri = "mongodb://localhost:27017/?readPreference=primaryPreferred" client, _ := mongo.Connect(options.Client().ApplyURI(uri))
readPreference
The client's default read-preference settings. See Read Preference in the MongoDB Server manual for more information.
Tipo de Dados: readpref.ReadPref
Valor padrão: readpref.Primary()
Exemplo:
opts := options.Client(). SetReadPreference(readpref.PrimaryPreferred()) client, _ := mongo.Connect(opts)
Opções de autenticação
Mecanismo de autenticação
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 os guias Mecanismo de autenticação.
Tipo de Dados: string
Valor padrão: vazio (sem autenticação) ou SCRAM-SHA-256 depois que a autenticação é habilitada
Exemplo:
const uri = "mongodb://user:password@localhost:27017/?authMechanism=PLAIN&authSource=admin" client, _ := mongo.Connect(options.Client().ApplyURI(uri))
Mecanismo de autenticação
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 os guias Mecanismo de autenticação.
Tipo de Dados: Credential
Valor padrão: vazio (sem autenticação) ou SCRAM-SHA-256 depois que a autenticação é habilitada
Exemplo:
credential := options.Credential{ AuthMechanism: "PLAIN", AuthSource: "admin", Username: "user", Password: "password", } opts := options.Client().SetAuth(credential) client, _ := mongo.Connect(opts)
Opções de seleção do servidor
ServerSelectionTimeout
O período durante o qual o driver tenta selecionar um servidor antes do tempo limite.
Tipo de dados: intnão negativo
Valor padrão: 30000 Milissegundos
Exemplo:
const uri = "mongodb://localhost:27017/?serverSelectionTimeoutMS=40000" client, _ := mongo.Connect(options.Client().ApplyURI(uri))
LocalThreshold
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.
Tipo de dados: intnão negativo
Valor padrão: 15 Milissegundos
Exemplo:
const uri = "mongodb://localhost:27017/?localThresholdMS=20000" client, _ := mongo.Connect(options.Client().ApplyURI(uri))
ServerSelectionTimeout
O período durante o qual o driver tenta selecionar um servidor antes do tempo limite.
Tipo de Dados: time.Duration
Valor padrão: 30 Segundos
Exemplo:
opts := options.Client(). SetServerSelectionTimeout(40 * time.Second) client, _ := mongo.Connect(opts)
LocalThreshold
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.
Tipo de Dados: time.Duration
Valor padrão: 15 Milissegundos
Exemplo:
opts := options.Client(). SetLocalThreshold(20 * time.Millisecond) client, _ := mongo.Connect(opts)
Opções de repetição
RetryReads
Permite leituras que podem ser repetidas.
Tipo de Dados: bool
Valor padrão: true
Exemplo:
const uri = "mongodb://localhost:27017/?retryReads=false" client, _ := mongo.Connect(options.Client().ApplyURI(uri))
RetryWrites
Habilita gravações que podem ser tentadas novamente.
Tipo de Dados: bool
Valor padrão: true
Exemplo:
const uri = "mongodb://localhost:27017/?retryWrites=false" client, _ := mongo.Connect(options.Client().ApplyURI(uri))
Max Adaptive Retries
O número máximo de vezes que o driver deve tentar novamente as operações que falham com um erro de sobrecarga do lado do servidor.
Tipo de dados: intnão negativo
Valor padrão: 2
Exemplo:
const uri = "mongodb://localhost:27017/?maxAdaptiveRetries=3" client, _ := mongo.Connect(options.Client().ApplyURI(uri))
RetryReads
Permite leituras que podem ser repetidas.
Tipo de Dados: bool
Valor padrão: true
Exemplo:
opts := options.Client(). SetRetryReads(false) client, _ := mongo.Connect(opts)
RetryWrites
Habilita gravações que podem ser tentadas novamente.
Tipo de Dados: bool
Valor padrão: true
Exemplo:
opts := options.Client(). SetRetryWrites(false) client, _ := mongo.Connect(opts)
Max Adaptive Retries
O número máximo de vezes que o driver deve tentar novamente as operações que falham com um erro de sobrecarga do lado do servidor.
Tipo de dados: uintnão negativo
Valor padrão: 2
Exemplo:
const uri = "mongodb://localhost:27017/?maxAdaptiveRetries=3" client, _ := mongo.Connect(options.Client().ApplyURI(uri))
Opções diversas
Nome do aplicativo
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 logs do MongoDB uma vez que a conexão é estabelecida. O valor também é registrado nos logs de query lentos e nas coleções de perfil.
Tipo de Dados: string
Valor padrão: nil
Exemplo:
const uri = "mongodb://localhost:27017/?appName=yourAppName" client, _ := mongo.Connect(options.Client().ApplyURI(uri))
loadBalanced
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
SrvMaxHostsVocê não está usando a propriedade
DirectConnection
Tipo de Dados: bool
Valor padrão: false
Exemplo:
const uri = "mongodb://localhost:27017/?loadBalanced=true" client, _ := mongo.Connect(options.Client().ApplyURI(uri))
srvMaxHosts
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.
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.
Tipo de dados: intnão negativo
Valor padrão: 0
Exemplo:
opts := options.Client(). SetSRVMaxHosts(5) client, _ := mongo.Connect(opts)
srvServiceName
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.
Tipo de Dados: string
Valor padrão: mongodb
Exemplo:
const uri = "mongodb+srv://localhost/?srvServiceName=yourServiceName" client, _ := mongo.Connect(options.Client().ApplyURI(uri))
Nome do aplicativo
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 logs do MongoDB uma vez que a conexão é estabelecida. O valor também é registrado nos logs de query lentos e nas coleções de perfil.
Tipo de Dados: string
Valor padrão: nil
Exemplo:
opts := options.Client(). SetAppName("yourAppName") client, _ := mongo.Connect(opts)
loadBalanced
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
SrvMaxHostsVocê não está usando a propriedade
DirectConnection
Tipo de Dados: bool
Valor padrão: false
Exemplo:
opts := options.Client(). SetLoadBalanced(true) client, _ := mongo.Connect(opts)
Server API
Configure a versão da API enviada ao servidor ao executar comandos. Para obter mais informações sobre a API do servidor, consulte o guia Stable API.
Tipo de Dados: ServerAPIOptions
Valor padrão: nil
Exemplo:
opts := options.Client(). SetServerAPIOptions(options.ServerAPI(options.ServerAPIVersion1)) client, _ := mongo.Connect(opts)
srvMaxHosts
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.
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.
Tipo de dados: intnão negativo
Valor padrão: 0
Exemplo:
opts := options.Client(). SetSRVMaxHosts(5) client, _ := mongo.Connect(opts)
srvServiceName
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.
Tipo de Dados: string
Valor padrão: mongodb
Exemplo:
opts := options.Client(). SetSRVServiceName("yourServiceName") client, _ := mongo.Connect(opts)
Informações adicionais
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.
Para obter mais informações sobre os tipos usados nesta página, consulte a seguinte documentação da API: