Join us at MongoDB.local London on 7 May to unlock new possibilities for your data. Use WEB50 to save 50%.
Register now >
Docs Menu
Docs Home
/ /

Crea un cliente de MongoDB

Para conectarse a una implementación de MongoDB, debe crear los siguientes elementos:

  • URI de conexión, también conocido como cadena de conexión, que le indica a la librería de PHP a qué implementación de MongoDB conectarse.

  • MongoDB\Client objeto, que crea la conexión a la implementación de MongoDB y te permite realizar operaciones en ella.

También puedes establecer opciones dentro de uno o ambos de estos componentes para personalizar la forma en que la librería PHP se comporta mientras está conectada a MongoDB.

Esta guía describe los componentes de una cadena de conexión y muestra cómo utilizar una MongoDB\Client objeto para conectarse a una implementación de MongoDB.

Una cadena de conexión estándar incluye los siguientes componentes:

Componente
Descripción

mongodb://

Requerido. Un prefijo que identifica esto como un string en el formato de conexión estándar.

db_username:db_password

opcional. Credenciales de autenticación. Si los incluyes, el cliente autentica a la persona usuaria contra la base de datos especificada en authSource. Para obtener más información sobre la opción de conexión authSource, consulta Mecanismos de autenticación.

host[:port]

Requerido. El host y el número de puerto opcional donde se ejecuta MongoDB. Si no incluyes el número de puerto, el controlador utiliza el puerto por defecto, 27017.

/defaultauthdb

Opcional. La base de datos de autenticación que se debe usar si la cadena de conexión incluye las credenciales de autenticación db_username:db_password@ pero no la opción authSource. Si no incluyes este componente, el cliente autentica al usuario contra la base de datos admin.

?<options>

Opcional. Un string del query que especifica opciones específicas de conexión como pares <name>=<value>. Consulta Opciones de conexión para obtener una descripción completa de estas opciones.

Para obtener más información sobre las cadenas de conexión, consulta Cadenas de conexión en el Manual del servidor.

Para crear una conexión a MongoDB, construye un objeto MongoDB\Client. Pasa los siguientes parámetros al constructor MongoDB\Client:

  • $uri": establece el URI de conexión."

  • $uriOptions: (Opcional) Establece las opciones de URI para configurar cómo se conecta el cliente a MongoDB, incluyendo las credenciales de autenticación y la configuración de selección de servidor. Si establece las mismas opciones en este parámetro y en la cadena de conexión, los $uriOptions valores prevalecen. Para ver una lista completa de las opciones compatibles, consulte la guía "Especificar opciones de conexión".

  • $driverOptions: (Opcional) Establece opciones para configurar el comportamiento de la extensión PHP subyacente, incluyendo la configuración de cifrado de datos y las opciones de validación de certificados para las conexiones TLS. Para ver una lista completa de opciones admitidas, consulte MongoDB\Client::__construct() en la documentación de la API.

Este ejemplo construye un cliente y pasa los siguientes parámetros:

  • URI de conexión, que conecta a una implementación de MongoDB en el puerto 27017 de localhost

  • Parámetro de opciones de URI, que indica a la biblioteca PHP que espere 10000 milisegundos para la selección del servidor antes de generar un error

<?php
$uri = 'mongodb://localhost:27017';
$uriOptions = ['serverSelectionTimeoutMS' => 10000];
$client = new MongoDB\Client($uri, $uriOptions);

La libmongoc biblioteca y la extensión PHP gestionan las conexiones a una implementación de MongoDB. Al construir una instancia, la biblioteca PHP crea un MongoDB\Client archivo MongoDB\Driver\Manager. instancia usando la misma cadena de conexión y opciones. La extensión también utiliza esos argumentos del constructor para derivar una clave hash para los clientes persistentes de libmongoc. Si antes persistió un cliente libmongoc utilizando una clave, se reutiliza. De lo contrario, se crea un nuevo cliente libmongoc y se mantiene para la duración del proceso worker PHP. Para obtener más información sobre este proceso, consulta la documentación de la extensión PHP.

Cada cliente libmongoc mantiene sus propias conexiones con la implementación de MongoDB y una vista de su topología. Al reutilizar un cliente libmongoc persistente, la biblioteca PHP puede evitar la sobrecarga de establecer nuevas conexiones y redescubrir la topología. Este enfoque generalmente mejora el rendimiento y es el comportamiento por defecto del driver.

Los clientes persistentes de libmongoc no se liberan hasta que termina el proceso del trabajador de PHP. Como resultado, las conexiones a una implementación de MongoDB podrían permanecer abiertas después de que un objeto MongoDB\Driver\Manager salga del alcance. Mientras que esto normalmente no representa un problema para las aplicaciones que se conectan a una sola implementación de MongoDB, podría ocasionar errores en las siguientes situaciones:

  • PHP-FPM está configurado con pm.max_requests=0 para que los trabajadores nunca se reinicien, y una aplicación PHP se implemente muchas veces con pequeños cambios en su cadena de conexión MongoDB u opciones. Esto podría llevar a una acumulación de libmongoc objetos de cliente en cada proceso de trabajador.

  • Una aplicación ocasionalmente se conecta a una implementación separada de MongoDB en un componente backend donde la latencia de la solicitud no es el aspecto más importante.

En el primer caso, reiniciar PHP-FPM como parte de la implementación de la aplicación permite liberar cualquier cliente libmongoc no utilizado y seguir usando un cliente persistente para la última cadena de conexión.

El segundo caso requiere una solución diferente. Especificar true para la opción de driver disableClientPersistence indica a la librería PHP crear un nuevo libmongoc cliente y garantizar que se libere cuando el respectivo MongoDB\Driver\Manager quede fuera de alcance.

El siguiente código demuestra cómo configurar la opción disableClientPersistence a true al crear un cliente:

<?php
$client = new MongoDB\Client(
uri: getenv('MONGODB_URI') ?: 'mongodb://127.0.0.1/',
driverOptions: ['disableClientPersistence' => true],
);

Nota

Si deshabilita la persistencia del cliente, la biblioteca PHP requiere más tiempo para establecer conexiones con la implementación de MongoDB y descubrir su topología.

Para obtener más información sobre cómo crear un objeto MongoDB\Client en la biblioteca PHP, consulte la siguiente documentación de API:

Volver

Conectar

En esta página