Overview
Esta página describe las opciones de conexión y autenticación de MongoDB disponibles en el controlador de Scala y explica cómo especificarlas para su conexión a 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
Puedes configurar las opciones de conexión en una instancia MongoClientSettings utilizando métodos de la clase MongoClientSettings.Builder y luego 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 datos: delimitado por comas string
Valor por defecto: null
Ejemplo:
val uri = "mongodb://localhost:27017/?compressors=snappy,zstd,zlib" val mongoClient = MongoClient(uri)
zlibCompressionLevel
El nivel de compresión que utilizará zlib. 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 predeterminado: 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 que utilizará zlib. 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.
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 predeterminado: 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.
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 predeterminado: 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 son necesarias 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 con la que autenticarse.
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 una URI de conexión, debe codificarse 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 una URI de conexión, debe codificarse 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, la fuente de autenticación y las propiedades específicas del mecanismo MongoClientSettings en, utilice el MongoCredential método de fábrica correspondiente. Para obtener más información, consulte la guía de 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 problema de lectura del cliente. Para obtener más información, consulte el apartado "Problemas de lectura" en el manual del servidor MongoDB.
Tipo de dato: string
Ejemplo:
val uri = "mongodb://localhost:27017/?readConcern=majority" val mongoClient = MongoClient(uri)
writeConcern
El permiso de escritura del cliente. Para obtener más información, consulte el apartado "Permiso de escritura" en el manual del servidor MongoDB.
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 problema de lectura del cliente. Para obtener más información, consulte el apartado "Problemas de lectura" en el manual del servidor MongoDB.
Tipo de dato: string
Ejemplo:
val settings = MongoClientSettings.builder() .readConcern(ReadConcern.MAJORITY) .build() val mongoClient = MongoClient(settings)
writeConcern
El permiso de escritura del cliente. Para obtener más información, consulte el apartado "Permiso de escritura" en el manual del servidor MongoDB.
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 las opciones de conexión, consulte Opciones de cadena de conexión en el manual del servidor MongoDB.
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: