Visão geral
Esta página descreve as opções de conexão e autenticação do MongoDB disponíveis no driver Scala e explica como especificá-las para sua conexão MongoDB.
Definir opções no URI 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:
val uri = "mongodb://localhost:27017/?connectTimeoutMS=60000&tls=true" val mongoClient = MongoClient(uri)
Definir opções em MongoClientSettings
Você pode definir opções de conexão em uma instância MongoClientSettings usando métodos da classe MongoClientSettings.Builder e, em seguida, passando o objeto de configurações para o construtor MongoClient().
Configurar a conexão dessa forma facilita a alteração das configurações no tempo de execução e pode ajudá-lo a detectar erros no tempo de compilação.
O exemplo a seguir mostra como especificar seu destino de conexão e definir outras opções ao criar uma instância do MongoClientSettings :
val settings = MongoClientSettings.builder() .applyToClusterSettings(builder => builder.hosts(List(new ServerAddress("localhost", 27017)).asJava)) .applyToSocketSettings(builder => builder.connectTimeout(60000, TimeUnit.MILLISECONDS)) .applyToSslSettings(builder => builder.enabled(true)) .build() val mongoClient = MongoClient(settings)
Se preferir fornecer uma string de conexão em vez de especificar o nome do host e a porta, você poderá usar o método applyConnectionString() e, em seguida, definir outras opções usando métodos de construtor, conforme mostrado no código a seguir:
val uri = "mongodb://localhost:27017/" val settings = MongoClientSettings.builder() .applyConnectionString(ConnectionString(uri)) .applyToSocketSettings(builder => builder.connectTimeout(60000, TimeUnit.MILLISECONDS)) .applyToSslSettings(builder => builder.enabled(true)) .build() val mongoClient = MongoClient(settings)
Compactação de rede
compressors
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: stringdelimitado por vírgulas
Valor padrão: null
Exemplo:
val uri = "mongodb://localhost:27017/?compressors=snappy,zstd,zlib" val mongoClient = MongoClient(uri)
zlibCompressionLevel
O nível de compactação zlib a ser usado. Esta opção aceita um valor inteiro entre -1 e 9:
-1: (padrão). zlib usa seu nível de compressão padrão (geralmente
6).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: integer
Valor padrão: -1
Exemplo:
val uri = "mongodb://localhost:27017/?compressors=zlib&zlibCompressionLevel=3" val mongoClient = MongoClient(uri)
compressors
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: List[MongoCompressor]
Valor padrão: lista vazia
Exemplo:
val settings = MongoClientSettings.builder() .compressorList(List( MongoCompressor.createSnappyCompressor(), MongoCompressor.createZstdCompressor(), MongoCompressor.createZlibCompressor() ).asJava) .build() val mongoClient = MongoClient(settings)
zlibCompressionLevel
O nível de compactação zlib a ser usado. Esta opção aceita um valor inteiro entre -1 e 9:
-1: (padrão). zlib usa seu nível de compressão padrão (geralmente
6).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: integer
Valor padrão: -1
Exemplo:
val settings = MongoClientSettings.builder() .compressorList(List( MongoCompressor.createZlibCompressor() .withProperty(MongoCompressor.LEVEL, 3) ).asJava) .build() val mongoClient = MongoClient(settings)
Tempo limite
connectTimeoutMS
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: integer
Valor padrão: 10000
Exemplo:
val uri = "mongodb://localhost:27017/?connectTimeoutMS=10000" val mongoClient = MongoClient(uri)
socketTimeoutMS (obsoleto)
Esta opção está obsoleta. Configure esse tempo limite definindo o tempo limite no nível do cliente.
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.
Tipo de Dados: integer
Valor padrão: sem tempo limite
Exemplo:
val uri = "mongodb://localhost:27017/?socketTimeoutMS=5000" val mongoClient = MongoClient(uri)
connectTimeoutMS
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: integer
Valor padrão: 10000
Exemplo:
val settings = MongoClientSettings.builder() .applyToSocketSettings(builder => builder.connectTimeout(10, TimeUnit.SECONDS)) .build() val mongoClient = MongoClient(settings)
socketTimeoutMS (obsoleto)
Esta opção está obsoleta. Configure esse tempo limite definindo o tempo limite no nível do cliente.
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.
Tipo de Dados: integer
Valor padrão: sem tempo limite
Exemplo:
val settings = MongoClientSettings.builder() .applyToSocketSettings(builder => builder.readTimeout(5, TimeUnit.SECONDS)) .build() val mongoClient = MongoClient(settings)
Seleção do Servidor
serverSelectionTimeoutMS
O período durante o qual o driver tenta selecionar um servidor antes do tempo limite.
Tipo de Dados: integer
Valor padrão: 30000
Exemplo:
val settings = MongoClientSettings.builder() .applyToClusterSettings(builder => builder.serverSelectionTimeout(30, TimeUnit.SECONDS)) .build() val mongoClient = MongoClient(settings)
Autenticação
Dica
Para saber mais sobre as opções de autenticação, consulte a seção Mecanismos de autenticação.
authMechanism
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.
Tipo de Dados: string
Valor padrão: "SCRAM-SHA-256" ao conectar-se ao MongoDB v4.0 ou posterior
Exemplo:
val uri = "mongodb://<username>:<password>@localhost:27017/?authMechanism=SCRAM-SHA-256" val mongoClient = MongoClient(uri)
authMechanismProperties
Opções específicas para o mecanismo de autenticação. Não é necessário para todos os mecanismos de autenticação.
Tipo de Dados: string
Exemplo:
val uri = "mongodb://localhost:27017/?authMechanismProperties=AWS_SESSION_TOKEN:12435" val mongoClient = MongoClient(uri)
authSource
O banco de dados para autenticar.
Tipo de Dados: string
Valor padrão: "admin"
Exemplo:
val uri = "mongodb://<username>:<password>@localhost:27017/?authSource=admin" val mongoClient = MongoClient(uri)
nome de usuário
O nome de usuário para autenticação. Quando esta opção é incluída em um URI de conexão, você deve codificá-la em porcentagem.
Tipo de Dados: string
Exemplo:
val uri = "mongodb://myUser:<password>@localhost:27017/" val mongoClient = MongoClient(uri)
Senha
A senha para autenticação. Quando esta opção é incluída em um URI de conexão, você deve codificá-la em porcentagem.
Tipo de Dados: string
Exemplo:
val uri = "mongodb://<username>:myPassword@localhost:27017/" val mongoClient = MongoClient(uri)
authMechanism
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.
Tipo de Dados: string
Valor padrão: "SCRAM-SHA-256" ao conectar-se ao MongoDB v4.0 ou posterior
Exemplo:
val settings = MongoClientSettings.builder() .credential(MongoCredential.createScramSha256Credential( "<username>", "<authSource>", "<password>".toCharArray)) .build() val mongoClient = MongoClient(settings)
Observação
Para configurar nome de usuário, senha, fonte de autenticação e propriedades específicas do mecanismo em MongoClientSettings, use o método de fábrica MongoCredential apropriado. Para saber mais, consulte o guia Mecanismos de autenticação.
Operações de leitura e escrita
replicaSet
O nome do conjunto de réplicas a que se conectar.
Tipo de Dados: string
Exemplo:
val uri = "mongodb://localhost:27017/?replicaSet=myRS" val mongoClient = MongoClient(uri)
directConnection
Especifica se deve forçar o envio de todas as operações para o host. Se você especificar esta opção, o driver não aceitará o formato de conexão SRV. Em vez disso, você deve usar o formato padrão de URI de conexão. Para saber mais sobre a conexão SRV e os formatos de conexão padrão, consulte o guia string de conexão no manual do MongoDB Server.
Esta propriedade deve ser configurada para false se você especificar mais de um nome de host.
Tipo de Dados: boolean
Valor padrão: false
Exemplo:
val uri = "mongodb://localhost:27017/?directConnection=true" val mongoClient = MongoClient(uri)
readPreference
As configurações de preferência de leitura padrão do cliente. Consulte Preferência de leitura no manual do MongoDB Server para obter mais informações.
Tipo de Dados: string
Valor padrão: primary
Exemplo:
val uri = "mongodb://localhost:27017/?readPreference=primary" val mongoClient = MongoClient(uri)
readConcern
A read concern do cliente. Para obter mais informações, consulte read concern no manual do MongoDB Server.
Tipo de Dados: string
Exemplo:
val uri = "mongodb://localhost:27017/?readConcern=majority" val mongoClient = MongoClient(uri)
writeConcern
O write concern do cliente. Para obter mais informações, consulte write concern no manual do MongoDB Server.
Tipo de Dados: string
Exemplo:
val uri = "mongodb://localhost:27017/?writeConcern=majority" val mongoClient = MongoClient(uri)
localThresholdMS
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: integer
Valor padrão: 15
Exemplo:
val uri = "mongodb://localhost:27017/?localThresholdMS=35" val mongoClient = MongoClient(uri)
replicaSet
O nome do conjunto de réplicas a que se conectar.
Tipo de Dados: string
Exemplo:
val settings = MongoClientSettings.builder() .applyToClusterSettings(builder => builder.requiredReplicaSetName("myRS")) .build() val mongoClient = MongoClient(settings)
directConnection
Especifica se deve forçar o envio de todas as operações para o host. Se você especificar esta opção, o driver não aceitará o formato de conexão SRV. Em vez disso, você deve usar o formato padrão de URI de conexão. Para saber mais sobre a conexão SRV e os formatos de conexão padrão, consulte o guia string de conexão no manual do MongoDB Server.
Esta propriedade deve ser configurada para false se você especificar mais de um nome de host.
Tipo de Dados: boolean
Valor padrão: false
Exemplo:
val settings = MongoClientSettings.builder() .applyToClusterSettings(builder => builder.mode(ClusterConnectionMode.SINGLE)) .build() val mongoClient = MongoClient(settings)
readPreference
As configurações de preferência de leitura padrão do cliente. Consulte Preferência de leitura no manual do MongoDB Server para obter mais informações.
Tipo de Dados: string
Valor padrão: primary
Exemplo:
val settings = MongoClientSettings.builder() .readPreference(ReadPreference.primary()) .build() val mongoClient = MongoClient(settings)
readConcern
A read concern do cliente. Para obter mais informações, consulte read concern no manual do MongoDB Server.
Tipo de Dados: string
Exemplo:
val settings = MongoClientSettings.builder() .readConcern(ReadConcern.MAJORITY) .build() val mongoClient = MongoClient(settings)
writeConcern
O write concern do cliente. Para obter mais informações, consulte write concern no manual do MongoDB Server.
Tipo de Dados: string
Exemplo:
val settings = MongoClientSettings.builder() .writeConcern(WriteConcern.MAJORITY) .build() val mongoClient = MongoClient(settings)
localThresholdMS
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: integer
Valor padrão: 15
Exemplo:
val settings = MongoClientSettings.builder() .applyToClusterSettings(builder => builder.localThreshold(35, TimeUnit.MILLISECONDS)) .build() val mongoClient = MongoClient(settings)
Informações adicionais
Para ver uma lista completa de opções de conexão, consulte Opções de string de conexão no manual do MongoDB Server.
Documentação da API
Para saber mais sobre as aulas e os métodos mencionados neste guia, consulte a seguinte documentação da API: