Overview
En esta guía, puede aprender sobre las opciones de conexión, autenticación y drivers, así como la forma de especificarlas en la configuración de la conexión a la base de datos de su aplicación Laravel. Las opciones de conexión se pasan a la Biblioteca PHP de MongoDB, que gestiona las conexiones a la base de datos.
Para obtener más información sobre la librería de PHP de MongoDB, consulta la Documentación de la biblioteca PHP de MongoDB.
Esta guía cubre los siguientes temas:
Opciones de conexión y autenticación
Aprende cómo agregar las opciones comunes de conexión y autenticación a tu archivo de configuración en las siguientes secciones:
Agregar opciones de conexión y autenticación
Puede especificar opciones de conexión o autenticación en su aplicación web Laravel. config/database.php archivo de configuración utilizando uno de los siguientes métodos:
Agrega la configuración y el valor como un elemento del arreglo en el elemento del arreglo del
options.Agregue la configuración y el valor como un parámetro de cadena de consulta en la cadena de conexión especificada en el elemento de matriz
dsn.
Para especificar una opción en la matriz options, agregue su nombre y valor como un elemento de la matriz, como se muestra en el siguiente ejemplo:
'connections' => [ 'mongodb' => [ 'dsn' => 'mongodb+srv://mongodb0.example.com/', 'driver' => 'mongodb', 'database' => 'sample_mflix', 'options' => [ 'appName' => 'myLaravelApp', 'compressors' => 'zlib', 'zlibCompressionLevel' => 7, ], ], ],
Para especificar opciones como parámetros en la cadena de conexión, utilice el siguiente formato de sintaxis de cadena de consulta:
Agrega el carácter de signo de interrogación,
?, para separar la información del host de los parámetros.Agrega las opciones formateándolas como
<option>=<value>.Insertar el carácter de ampersand,
&, entre cada par de opción y valor para separarlos.
El siguiente ejemplo de configuración muestra la sintaxis del parámetro de la cadena de conexión:
'dsn' => 'mongodb+srv://mongodb0.example.com/?appName=myLaravelApp&compressors=zlib',
Descripciones de opciones
La siguiente tabla describe una lista de opciones de conexión y autenticación, junto con sus valores por defecto:
Nombre de la opción | Valores permitidos | Valor por defecto | Descripción |
|---|---|---|---|
appName | String | Ninguno | Specifies the application name that the MongoDB PHP Library sends the
MongoDB deployment as part of the handshake. Specifying appName can help you identify activities related
to that application in the server logs. |
mecanismo de autenticación | String | Ninguno | Especifica qué mecanismo de autenticación utilizar. Si no se especifica esta opción, el driver utiliza el mecanismo de autenticación por defecto. Para obtener más información, consulta Autenticación en el manual del Servidor. |
authMechanismProperties | String | Ninguno | Especifica más propiedades relacionadas con el mecanismo de autenticación establecido en la opción |
authSource | String | Ver descripción | Specifies the database used to authenticate. This option defaults to admin for SCRAM-based authentication
mechanisms, $external for the MONGODB-X509 mechanism, and the
database name or $external for the PLAIN mechanism. |
compresores | Una lista de cadenas separadas por comas | Ninguno | Especifica los compresores de datos que la librería MongoDB PHP utiliza para reducir la cantidad de datos de red enviados entre MongoDB y tu aplicación en el orden especificado. |
connectTimeoutMS | Non-negative integer |
| Especifica el tiempo de espera de conexión, en milisegundos, que se pasa a cada flujo TCP subyacente al intentar conectarse al servidor. |
directConnection | Booleano |
| Especifica si se debe conectar directamente a un solo host en lugar de descubrir y conectarse a todos los servidores del clúster. Para obtener más información sobre esta configuración, consulta Conexión directa en la Guía de conexión. |
heartbeatFrequencyMS | Entero mayor o igual que |
| Especifica el tiempo en milisegundos que cada hilo de supervisión espera entre realizar chequeos al servidor. |
journal | Booleano |
| Solicita confirmación de que la operación se propagó al registro en disco. |
localThresholdMS | Non-negative integer |
| Specifies the time in milliseconds that the average round-trip time
between the driver and server can last compared to the shortest
round-trip time of all the suitable servers. A value of 0 indicates no latency window, so only the server with
the lowest average round-trip time is eligible. |
maxStalenessSeconds |
|
| Specifies the maximum lag, in seconds, behind the primary node
that a secondary node can be considered for the given operation. This option's value must be at least 90, or the operation raises
an error. A value of -1 means there is no maximum lag. |
readConcernLevel | String | Ninguno | Especifica el nivel de consistencia de lectura predeterminado para las operaciones realizadas por MongoDB PHP librería. Para obtener más información, ve nivel de consistencia de lectura en el manual del servidor. |
readPreference | String |
| Especifica cómo la biblioteca PHP de MongoDB enruta una operación de lectura a los miembros del conjunto de réplicas. Para obtener más información, consulte Preferencia de lectura en el manual del servidor. |
readPreferenceTags | Una lista de pares de clave-valor separados por comas | Ninguno | Especifica qué miembros del set de réplicas se consideran para operaciones. Cada instancia de esta clave es un conjunto independiente de etiquetas. El driver verifica cada conjunto de etiquetas hasta que encuentra uno o varios servidores con cada etiqueta. |
replicaSet | String | Ninguno | Especifica el nombre del set de réplicas al que se conecta la librería PHP de MongoDB. |
retryReads | Booleano |
| Especifica si la biblioteca PHP MongoDB vuelve a intentar una operación de lectura si la operación falla. |
serverSelectionTimeoutMS | Non-negative integer |
| Especifica el tiempo en milisegundos que la Librería PHP de MongoDB espera para seleccionar un servidor para una operación antes de agotar el tiempo de espera. |
tls | Booleano |
| Specifies the TLS configuration for the MongoDB PHP Library to use in its
connections with the server. By default, TLS is off. |
tlsPermitirCertificadosInválidos | Booleano |
| Specifies whether the MongoDB PHP Library returns an error if the server
presents an invalid certificate. We recommend setting this option to true only in testing
environments to avoid creating security vulnerabilities in your
application. |
tlsCAFile | String | Ver descripción | Specifies the path to the certificate authority (CA) file that
the MongoDB PHP Library uses for TLS. If you do not specify this option, the driver uses the Mozilla
root certificates from the webpki-roots crate. |
tlsCertificateKeyFile | String | Ninguno | Specifies the path to the certificate file that MongoDB PHP Library
presents to the server to verify its identity. If you do not set this option, the MongoDB PHP Library does not
attempt to verify its identity with the server. |
tlsInsecure | Booleano |
| Specifies whether the MongoDB PHP Library returns an error if the server
presents an invalid certificate. We recommend setting this option to true only in testing
environments to avoid creating security vulnerabilities in your
application. |
w | Entero o cadena no negativo | Ninguno | Requests acknowledgment that the operation has propagated to a
specific number or variety of servers. To learn more, see Write Concern
in the Server manual. |
wTimeoutMS | Non-negative integer | Sin tiempo de espera | Especifica un límite de tiempo, en milisegundos, para la operación de escritura. Si una operación no se propaga al nivel solicitado dentro del límite de tiempo, la biblioteca PHP de MongoDB genera un error. |
zlibCompressionLevel | entero entre |
| Specifies the level field of the zlib compression if you use that compressor.Setting a value of -1 selects the default compression level (6).Setting a value of 0 specifies no compression, and setting
a value of 9 specifies maximum compression. |
Para ver una lista completa de opciones de conexión, consulta la sección Opciones de cadenas de conexión de la guía Cadenas de conexión en el manual del servidor. Seleccione PHP de la
Select your language menú desplegable en el lado derecho de la página.
Opciones de conexión de controlador
Las opciones del controlador modifican el comportamiento de la biblioteca PHP MongoDB, que administra las conexiones y todas las operaciones entre una aplicación Laravel y MongoDB.
Puedes especificar las opciones del controlador en el archivo de configuración config/database.php de tu aplicación web Laravel. Para agregar opciones de controlador, agregue el ajuste y el valor como un elemento de arreglo en el elemento de arreglo driver_options, tal como se muestra en el siguiente ejemplo:
'connections' => [ 'mongodb' => [ 'dsn' => 'mongodb+srv://mongodb0.example.com/', 'driver' => 'mongodb', 'database' => 'sample_mflix', 'driver_options' => [ 'serverApi' => 1, 'allow_invalid_hostname' => false, ], ], ]
Consulta la sección $driverOptions: arreglo de la documentación de la librería PHP de MongoDB para ver una lista de opciones de driver.
Desactivar el uso de la conversión de nombres del campo id
A partir de Laravel MongoDB v5.0, id es un alias para el campo _id en los documentos MongoDB, y la biblioteca convierte automáticamente id en _id tanto para los campos de nivel superior como para los incrustados al consultar y almacenar datos.
Cuando se usa Laravel MongoDB v5.3 o posterior, puedes deshabilitar la conversión automática de id a _id para documentos incrustados. Para ello, realiza una de las siguientes acciones:
Configure el ajuste
rename_embedded_id_fieldenfalseen su archivoconfig/database.php:'connections' => [ 'mongodb' => [ 'dsn' => 'mongodb+srv://mongodb0.example.com/', 'driver' => 'mongodb', 'database' => 'sample_mflix', 'rename_embedded_id_field' => false, // Other settings ], ], Pase
falseal métodosetRenameEmbeddedIdField()en su aplicación:DB::connection('mongodb')->setRenameEmbeddedIdField(false);
Importante
Recomendamos utilizar esta opción solo para garantizar la compatibilidad con los esquemas de documentos existentes. En nuevos proyectos, evita utilizar id para nombres de campos en documentos incrustados para que puedas mantener el comportamiento predeterminado de Laravel MongoDB.