Overview
Esta página describe las opciones de conexión y autenticación de MongoDB disponibles en el driver Scala y explica cómo especificarlas para su conexión de MongoDB.
Configura opciones en el URI de conexión
Si pasas un URI de conexión al constructor MongoClient(), puedes incluir opciones de conexión en la string como pares <name>=<value>. En el siguiente ejemplo, el URI de la conexión contiene la opción connectTimeoutMS con un valor de 60000 y la opción tls con un valor de true:
val uri = "mongodb://localhost:27017/?connectTimeoutMS=60000&tls=true" val mongoClient = MongoClient(uri)
Establece las opciones en MongoClientSettings
Puede configurar las opciones de conexión en una instancia de MongoClientSettings utilizando métodos de la clase MongoClientSettings.Builder y, a continuación, pasando el objeto de configuración al constructor MongoClient().
Configurar la conexión de esta manera facilita el cambio de configuraciones en tiempo de ejecución y puede ayudar a detectar errores en tiempo de compilación.
El siguiente ejemplo muestra cómo especificar el destino de conexión y ajustar otras opciones al crear una instancia de 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)
Si prefieres proporcionar una cadena de conexión en lugar de especificar el hostname y el puerto, puedes usar el método applyConnectionString(), y luego establecer otras opciones usando métodos del builder, como se muestra en el siguiente código:
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)
Compresión de la red
compresores
Los tipos de compresión preferidos, en orden, para los mensajes del protocolo de conexión enviados al servidor o recibidos de este. Puede habilitar "snappy", "zlib" y "zstd" como dependencias opcionales en tiempo de compilación. El driver utiliza el primero de estos tipos de compresión que admite el servidor.
Tipo de dato: stringdelimitado por comas
Valor por defecto: null
Ejemplo:
val uri = "mongodb://localhost:27017/?compressors=snappy,zstd,zlib" val mongoClient = MongoClient(uri)
zlibCompressionLevel
El nivel de compresión de zlib que se debe usar. Esta opción acepta un valor entero entre -1 y 9:
-1: (por defecto). zlib utiliza su nivel de compresión por defecto (normalmente
6).0: Sin compresión.
1: La velocidad más rápida, pero la compresión más baja.
9: Mejor compresión pero la velocidad más lenta.
Tipo de dato: integer
Valor por defecto: -1
Ejemplo:
val uri = "mongodb://localhost:27017/?compressors=zlib&zlibCompressionLevel=3" val mongoClient = MongoClient(uri)
compresores
Los tipos de compresión preferidos, en orden, para los mensajes del protocolo de conexión enviados al servidor o recibidos de este. Puede habilitar "snappy", "zlib" y "zstd" como dependencias opcionales en tiempo de compilación. El driver utiliza el primero de estos tipos de compresión que admite el servidor.
Tipo de dato: List[MongoCompressor]
Valor por defecto: lista vacía
Ejemplo:
val settings = MongoClientSettings.builder() .compressorList(List( MongoCompressor.createSnappyCompressor(), MongoCompressor.createZstdCompressor(), MongoCompressor.createZlibCompressor() ).asJava) .build() val mongoClient = MongoClient(settings)
zlibCompressionLevel
El nivel de compresión de zlib que se debe usar. Esta opción acepta un valor entero entre -1 y 9:
-1: (por defecto). zlib utiliza su nivel de compresión por defecto (normalmente
6).0: Sin compresión.
1: La velocidad más rápida, pero la compresión más baja.
9: Mejor compresión pero la velocidad más lenta.
Tipo de dato: integer
Valor por defecto: -1
Ejemplo:
val settings = MongoClientSettings.builder() .compressorList(List( MongoCompressor.createZlibCompressor() .withProperty(MongoCompressor.LEVEL, 3) ).asJava) .build() val mongoClient = MongoClient(settings)
Tiempos de espera
connectTimeoutMS
La duración de tiempo que el driver intenta establecer una sola conexión de socket TCP con el servidor antes de agotar el tiempo de espera.
Tipo de dato: integer
Valor por defecto: 10000
Ejemplo:
val uri = "mongodb://localhost:27017/?connectTimeoutMS=10000" val mongoClient = MongoClient(uri)
socketTimeoutMS (obsoleto)
Esta opción está obsoleta. Configure este tiempo de espera estableciendo el tiempo de espera a nivel de cliente en su lugar.
La duración de tiempo que el controlador intenta enviar o recibir a través de un socket antes de exceder el tiempo de espera. El sistema operativo establece el valor por defecto.
Tipo de dato: integer
Valor por defecto: sin tiempo de espera
Ejemplo:
val uri = "mongodb://localhost:27017/?socketTimeoutMS=5000" val mongoClient = MongoClient(uri)
connectTimeoutMS
La duración de tiempo que el driver intenta establecer una sola conexión de socket TCP con el servidor antes de agotar el tiempo de espera.
Tipo de dato: integer
Valor por defecto: 10000
Ejemplo:
val settings = MongoClientSettings.builder() .applyToSocketSettings(builder => builder.connectTimeout(10, TimeUnit.SECONDS)) .build() val mongoClient = MongoClient(settings)
socketTimeoutMS (obsoleto)
Esta opción está obsoleta. Configure este tiempo de espera estableciendo el tiempo de espera a nivel de cliente en su lugar.
La duración de tiempo que el controlador intenta enviar o recibir a través de un socket antes de exceder el tiempo de espera. El sistema operativo establece el valor por defecto.
Tipo de dato: integer
Valor por defecto: sin tiempo de espera
Ejemplo:
val settings = MongoClientSettings.builder() .applyToSocketSettings(builder => builder.readTimeout(5, TimeUnit.SECONDS)) .build() val mongoClient = MongoClient(settings)
Selección de servidores
serverSelectionTimeoutMS
El tiempo que el driver intenta seleccionar un servidor antes de agotar el tiempo de espera.
Tipo de dato: integer
Valor por defecto: 30000
Ejemplo:
val settings = MongoClientSettings.builder() .applyToClusterSettings(builder => builder.serverSelectionTimeout(30, TimeUnit.SECONDS)) .build() val mongoClient = MongoClient(settings)
Autenticación
Tip
Para aprender más sobre las opciones de autenticación, consulta la sección Mecanismos de autenticación.
mecanismo de autenticación
El mecanismo que utiliza el driver para autenticarse en MongoDB Server. Si no especificas un mecanismo de autenticación, el driver utiliza SCRAM-SHA-1 o SCRAM-SHA-256, según la versión del servidor.
Tipo de dato: string
Valor por defecto: "SCRAM-SHA-256" al conectarse a MongoDB v4.0 o posterior
Ejemplo:
val uri = "mongodb://<username>:<password>@localhost:27017/?authMechanism=SCRAM-SHA-256" val mongoClient = MongoClient(uri)
authMechanismProperties
Opciones específicas del mecanismo de autenticación. No es necesario para todos los mecanismos de autenticación.
Tipo de dato: string
Ejemplo:
val uri = "mongodb://localhost:27017/?authMechanismProperties=AWS_SESSION_TOKEN:12435" val mongoClient = MongoClient(uri)
authSource
La base de datos contra la que se autentica.
Tipo de dato: string
Valor por defecto: "admin"
Ejemplo:
val uri = "mongodb://<username>:<password>@localhost:27017/?authSource=admin" val mongoClient = MongoClient(uri)
Nombre de usuario
El nombre de usuario para la autenticación. Cuando esta opción se incluye en un URI de conexión, debe codificarla con porcentaje.
Tipo de dato: string
Ejemplo:
val uri = "mongodb://myUser:<password>@localhost:27017/" val mongoClient = MongoClient(uri)
Contraseña
La contraseña para la autenticación. Cuando esta opción se incluye en un URI de conexión, debe codificarla con porcentaje.
Tipo de dato: string
Ejemplo:
val uri = "mongodb://<username>:myPassword@localhost:27017/" val mongoClient = MongoClient(uri)
mecanismo de autenticación
El mecanismo que utiliza el driver para autenticarse en MongoDB Server. Si no especificas un mecanismo de autenticación, el driver utiliza SCRAM-SHA-1 o SCRAM-SHA-256, según la versión del servidor.
Tipo de dato: string
Valor por defecto: "SCRAM-SHA-256" al conectarse a MongoDB v4.0 o posterior
Ejemplo:
val settings = MongoClientSettings.builder() .credential(MongoCredential.createScramSha256Credential( "<username>", "<authSource>", "<password>".toCharArray)) .build() val mongoClient = MongoClient(settings)
Nota
Para configurar el nombre de usuario, la contraseña, el origen de autenticación y las propiedades específicas del mecanismo en MongoClientSettings, utilice el método de fábrica MongoCredential adecuado. Para obtener más información, consulte la guía Mecanismos de autenticación.
Operaciones de Lectura y Escritura
replicaSet
El nombre del set de réplicas al que conectarse.
Tipo de dato: string
Ejemplo:
val uri = "mongodb://localhost:27017/?replicaSet=myRS" val mongoClient = MongoClient(uri)
directConnection
Especifica si se debe forzar el despacho de todas las operaciones al host. Si especifica esta opción, el driver no acepta el formato de conexión SRV. En su lugar, debe utilizar el formato URI de conexión estándar. Para obtener más información sobre la conexión SRV y los formatos de conexión estándar, consulte la guía Cadenas de conexión en el manual de MongoDB Server.
Esta propiedad debe establecerse en false si se especifica más de un nombre de host.
Tipo de dato: boolean
Valor por defecto: false
Ejemplo:
val uri = "mongodb://localhost:27017/?directConnection=true" val mongoClient = MongoClient(uri)
readPreference
La configuración de preferencia de lectura por defecto del cliente. Consulte Preferencia de lectura en el manual de MongoDB Server para obtener más información.
Tipo de dato: string
Valor por defecto: primary
Ejemplo:
val uri = "mongodb://localhost:27017/?readPreference=primary" val mongoClient = MongoClient(uri)
readConcern
El nivel de consistencia de lectura del cliente. Para obtener más información, consulte Nivel de consistencia de lectura en el manual de MongoDB Server.
Tipo de dato: string
Ejemplo:
val uri = "mongodb://localhost:27017/?readConcern=majority" val mongoClient = MongoClient(uri)
writeConcern
El nivel de confirmación de escritura (write concern) del cliente. Para obtener más información, consulte Nivel de confirmación de escritura (write concern) en el manual de MongoDB Server.
Tipo de dato: string
Ejemplo:
val uri = "mongodb://localhost:27017/?writeConcern=majority" val mongoClient = MongoClient(uri)
localThresholdMS
La ventana de latencia para la elegibilidad del servidor. Si el viaje de ida y vuelta de un servidor tarda más que el tiempo de viaje de ida y vuelta del servidor más rápido más este valor, el servidor no es elegible para la selección.
Tipo de dato: integer
Valor por defecto: 15
Ejemplo:
val uri = "mongodb://localhost:27017/?localThresholdMS=35" val mongoClient = MongoClient(uri)
replicaSet
El nombre del set de réplicas al que conectarse.
Tipo de dato: string
Ejemplo:
val settings = MongoClientSettings.builder() .applyToClusterSettings(builder => builder.requiredReplicaSetName("myRS")) .build() val mongoClient = MongoClient(settings)
directConnection
Especifica si se debe forzar el despacho de todas las operaciones al host. Si especifica esta opción, el driver no acepta el formato de conexión SRV. En su lugar, debe utilizar el formato URI de conexión estándar. Para obtener más información sobre la conexión SRV y los formatos de conexión estándar, consulte la guía Cadenas de conexión en el manual de MongoDB Server.
Esta propiedad debe establecerse en false si se especifica más de un nombre de host.
Tipo de dato: boolean
Valor por defecto: false
Ejemplo:
val settings = MongoClientSettings.builder() .applyToClusterSettings(builder => builder.mode(ClusterConnectionMode.SINGLE)) .build() val mongoClient = MongoClient(settings)
readPreference
La configuración de preferencia de lectura por defecto del cliente. Consulte Preferencia de lectura en el manual de MongoDB Server para obtener más información.
Tipo de dato: string
Valor por defecto: primary
Ejemplo:
val settings = MongoClientSettings.builder() .readPreference(ReadPreference.primary()) .build() val mongoClient = MongoClient(settings)
readConcern
El nivel de consistencia de lectura del cliente. Para obtener más información, consulte Nivel de consistencia de lectura en el manual de MongoDB Server.
Tipo de dato: string
Ejemplo:
val settings = MongoClientSettings.builder() .readConcern(ReadConcern.MAJORITY) .build() val mongoClient = MongoClient(settings)
writeConcern
El nivel de confirmación de escritura (write concern) del cliente. Para obtener más información, consulte Nivel de confirmación de escritura (write concern) en el manual de MongoDB Server.
Tipo de dato: string
Ejemplo:
val settings = MongoClientSettings.builder() .writeConcern(WriteConcern.MAJORITY) .build() val mongoClient = MongoClient(settings)
localThresholdMS
La ventana de latencia para la elegibilidad del servidor. Si el viaje de ida y vuelta de un servidor tarda más que el tiempo de viaje de ida y vuelta del servidor más rápido más este valor, el servidor no es elegible para la selección.
Tipo de dato: integer
Valor por defecto: 15
Ejemplo:
val settings = MongoClientSettings.builder() .applyToClusterSettings(builder => builder.localThreshold(35, TimeUnit.MILLISECONDS)) .build() val mongoClient = MongoClient(settings)
Información Adicional
Para ver una lista completa de opciones de conexión, consulta Opciones de cadena de conexión en el manual de MongoDB Server.
Documentación de la API
Para obtener más información sobre las clases y métodos mencionados en esta guía, consulta la siguiente documentación API: