Skip to main content

Parâmetros na Connection String | MongoDB | Banco de Dados

  • Parâmetros na Connection String | MongoDB | Banco de Dados

Configurações de conexão no MongoDB

warning

Cuidado com o sufixo após o mongodb

URICorreto?Quando usar
mongodb://localhost:27017/?maxPoolSize=50Simconexão direta/local
mongodb://host1:27017,host2:27017/?replicaSet=rs0&maxPoolSize=50Simreplica set com hosts informados manualmente
mongodb+srv://cluster.mongodb.net/?maxPoolSize=50Simcluster com DNS Seed List
mongodb+srv://localhost:27017Nãoinválido para esse propósito

As opções de conexão no MongoDB são passadas como pares nome=valor na URI, separadas por &. A documentação oficial recomenda usar mongodb+srv:// quando possível; já mongodb:// exige informar manualmente os hosts do cluster. (MongoDB)

Exemplo

mongodb+srv://usuario:senha@cluster.mongodb.net/appdb?retryWrites=true&w=majority&appName=MinhaApi

Tabela das principais opções

OpçãoPara que serveExemploObservação prática
replicaSetInforma o nome do replica setreplicaSet=rs0Importante para comportamento consistente ao conectar em replica set. (MongoDB)
directConnectionForça conexão direta com um único hostdirectConnection=trueCom true, o cliente não descobre os outros membros; útil em dev/teste, especialmente com Docker. (MongoDB)
tlsAtiva/desativa TLS/SSLtls=trueEm URI SRV, o padrão é true; em URI padrão, o padrão é false. ssl é equivalente. (MongoDB)
sslEquivalente a tlsssl=trueMantido por compatibilidade. (MongoDB)
authSourceDefine em qual banco as credenciais serão validadasauthSource=adminSe não for informado, usa defaultauthdb ou admin, dependendo do caso. (MongoDB)
authMechanismDefine o mecanismo de autenticaçãoauthMechanism=SCRAM-SHA-256O padrão é SCRAM-SHA-256; pode haver fallback para SCRAM-SHA-1. (MongoDB)
readPreferenceDefine de qual nó as leituras podem sairreadPreference=secondaryO padrão é primary. Em transações com leitura, deve ser primary. (MongoDB)
readPreferenceTagsFiltra leitura por tags dos nósreadPreferenceTags=dc:sp,rack:r1Usado junto com readPreference, normalmente em ambientes distribuídos. (MongoDB)
maxStalenessSecondsLimita o atraso máximo aceitável de um secundáriomaxStalenessSeconds=120Serve para evitar leitura em secundário muito defasado. (MongoDB)
wDefine o write concernw=majoritymajority é a opção mais comum para maior durabilidade. Atlas aplica majority por padrão se você não informar write concern. (MongoDB)
journalExige confirmação de gravação no journaljournal=trueAumenta durabilidade da escrita. (MongoDB)
wtimeoutMSTempo limite do write concernwtimeoutMS=5000Está deprecated; a documentação manda usar timeoutMS no lugar. (MongoDB)
retryWritesHabilita retry automático de escritas elegíveisretryWrites=trueDrivers oficiais usam true por padrão. Muito importante para failover/eleições. (MongoDB)
retryReadsHabilita retry automático de leituras elegíveisretryReads=trueDrivers oficiais usam true por padrão. (MongoDB)
connectTimeoutMSTempo máximo para estabelecer conexãoconnectTimeoutMS=10000O padrão geral é 10s, mas pode variar por driver. (MongoDB)
socketTimeoutMSTempo máximo para envio/recebimento em socketsocketTimeoutMS=30000O padrão costuma ser sem timeout, mas pode variar por driver. (MongoDB)
serverSelectionTimeoutMSTempo máximo para o driver encontrar um servidor adequadoserverSelectionTimeoutMS=30000Muito útil para ajustar comportamento em quedas e failover. O padrão é 30s. (MongoDB)
localThresholdMSJanela de latência aceitável entre nós elegíveislocalThresholdMS=15Ajuda o driver a decidir entre múltiplos nós válidos. Padrão: 15 ms. (MongoDB)
heartbeatFrequencyMSIntervalo de verificação do estado do clusterheartbeatFrequencyMS=10000Controla a frequência com que o driver monitora os nós. (MongoDB)
maxPoolSizeMáximo de conexões no poolmaxPoolSize=100Padrão: 100. Importante para APIs com concorrência. (MongoDB)
minPoolSizeMínimo de conexões mantidas no poolminPoolSize=10Evita pool “frio” em apps com tráfego constante. (MongoDB)
maxIdleTimeMSTempo máximo que uma conexão pode ficar ociosa no poolmaxIdleTimeMS=60000Nem todo driver suporta. (MongoDB)
waitQueueTimeoutMSTempo máximo que uma thread espera por conexão livre no poolwaitQueueTimeoutMS=5000Ajuda a controlar contenção no pool. (MongoDB)
compressorsHabilita compressão de tráfego entre cliente e servidorcompressors=zstd,snappyPode usar snappy, zlib e zstd. Só funciona se cliente e servidor compartilharem compressor. (MongoDB)
zlibCompressionLevelNível de compressão do zlibzlibCompressionLevel=6Quanto maior, maior compressão e menor velocidade. (MongoDB)
appNameDefine nome da aplicação na conexãoappName=MinhaApiAparece em logs, profiler e currentOp, ótimo para observabilidade. (MongoDB)
loadBalancedIndica conexão via load balancerloadBalanced=trueSó pode ser usado em cenários específicos. (MongoDB)

As opções que você mais vai usar no dia a dia

CenárioOpções mais comuns
Conexão básica seguratls=true, authSource=admin, appName=MinhaApi
Replica set em produçãoreplicaSet=rs0, retryWrites=true, w=majority
Leitura em secundárioreadPreference=secondary
Ajuste de timeoutconnectTimeoutMS, socketTimeoutMS, serverSelectionTimeoutMS
Ajuste de poolmaxPoolSize, minPoolSize, maxIdleTimeMS
Melhor observabilidadeappName=...

Exemplos prontos

1. Replica set com escrita durável

mongodb://user:senha@db1:27017,db2:27017,db3:27017/?replicaSet=rs0&retryWrites=true&w=majority

2. Atlas com TLS e nome da aplicação

mongodb+srv://user:senha@cluster.mongodb.net/appdb?retryWrites=true&w=majority&appName=MinhaApi

3. Leitura em secundário com limite de atraso

mongodb://user:senha@db1:27017,db2:27017,db3:27017/?replicaSet=rs0&readPreference=secondary&maxStalenessSeconds=120

4. Ajustando pool e timeout

mongodb://user:senha@db1:27017/?maxPoolSize=200&minPoolSize=20&connectTimeoutMS=10000&serverSelectionTimeoutMS=5000

Resumo prático

TipoOpções principais
Descoberta do clusterreplicaSet, directConnection
Segurançatls, ssl, authSource, authMechanism
LeiturareadPreference, readPreferenceTags, maxStalenessSeconds
Escritaw, journal, retryWrites
TimeoutconnectTimeoutMS, socketTimeoutMS, serverSelectionTimeoutMS
PoolmaxPoolSize, minPoolSize, maxIdleTimeMS, waitQueueTimeoutMS
Redecompressors, zlibCompressionLevel
ObservabilidadeappName

Observações importantes

  • Prefira mongodb+srv:// quando possível, porque ele simplifica a descoberta dos hosts do cluster. (MongoDB)

  • Em replica set, usar replicaSet=... ajuda a manter comportamento consistente entre drivers. (MongoDB)

  • Para cenários de produção com failover, normalmente a combinação mais forte é:

    • retryWrites=true
    • w=majority
  • wtimeoutMS está depreciado; o caminho atual é usar timeoutMS. (MongoDB)