Definición
MongoDB\Client::__construct()Construye un nuevo
Clientinstancia.function __construct( ?string $uri = null, array $uriOptions = [], array $driverOptions = [] )
Parámetros
$uri: stringLa cadena de conexión de MongoDB. Consulta Cadenas de conexión en el manual de MongoDB para obtener más información.
Por defecto es
"mongodb://127.0.0.1:27017"si no se especifica.Cualquier carácter especial en los componentes URI debe codificarse de acuerdo con RFC 3986. Esto es particularmente relevante para el nombre de usuario y la contraseña, que a menudo pueden incluir caracteres especiales como
@,:o%. Al conectarse mediante un socket de dominio Unix, la ruta del socket puede contener caracteres especiales como barras y debe estar codificada. La rawurlencode() función se puede utilizar para codificar partes constituyentes de la URI.$uriOptions: arregloEspecifica opciones URI adicionales, como credenciales de autenticación o parámetros del string del query. Las opciones especificadas en
$uriOptionstienen prioridad sobre cualquier opción análoga presente en la string$uriy no es necesario codificarlas según RFC 3986.Consulte la documentación de la extensión MongoDB\Driver\Manager::__construct() para obtener una lista de las opciones compatibles.
$driverOptions: arregloEspecifica opciones específicas para el controlador PHP. Además de las opciones soportadas por la extensión, la librería también permite especificar un type map por defecto a aplicar a los cursores que crea.
NombreTipoDescripcióncifrado automático
arreglo
Opciones para configurar el cifrado a nivel de campo del lado del cliente en el controlador. Consulte la documentación de la extensión para obtener una lista de las opciones de cifrado compatibles.
Si se proporciona un
MongoDB\Clientpara la opciónkeyVaultClient, se desempaquetará como un MongoDB\driver\administrador para la extensión.Novedad en la versión 1.6.
controlador
arreglo
Metadatos adicionales del controlador que se transmitirán en el apretón de manos del servidor. Este es un arreglo que contiene los campos de string
name,versionyplatform. Por ejemplo:[ 'name' => 'my-driver', 'version' => '1.2.3-dev', 'platform' => 'some-platform', ] Esta funcionalidad está diseñada principalmente para drivers personalizados y ODMs, que pueden querer identificarse ante el servidor con fines de diagnóstico. Las aplicaciones que deseen identificarse deberían usar la opción de URI
appNameen lugar de esta opción.Novedades en la versión 1.7.
serverApi
Se utiliza para declarar una versión de la API en el cliente. Consulta la página API estable en el manual del servidor para obtener información adicional.
Nuevo en la versión 1.9.
typeMap
arreglo
Mapa de tipo por defecto para aplicar a los cursores, que determina cómo se convierten los documentos BSON a valores de PHP. La librería utiliza el siguiente mapa de tipos por defecto:
[ 'array' => 'MongoDB\Model\BSONArray', 'document' => 'MongoDB\Model\BSONDocument', 'root' => 'MongoDB\Model\BSONDocument', ] builderEncoder
MongoDB\Codec\Encoder
Codificadora que se va a usar para los desarrolladores de query y agregaciones. Si no se establece, esta opción será por defecto una nueva instancia de la clase
MongoDB\Builder\BuilderEncoder.Nuevo en la versión 1.21.
allow_invalid_hostname
booleano
Desactiva la validación del nombre de host si es
true. El valor predeterminado esfalse.Permitir nombres de host no válidos puede exponer al controlador a un ataque de intermediario.
Obsoleto desde la versión 1.6: Esta opción ha quedado obsoleta. En su lugar, usa la opción URI
tlsAllowInvalidHostnames.ca_dir
string
Ruta a un directorio de certificados correctamente encriptada. Por defecto, se utilizará el almacén de certificados del sistema.
Vuelve a la opción de contexto SSL obsoleta
capathsi no se especifica.archivo ca
string
Ruta a un archivo de autoridad certificadora. Por defecto, se utilizará el almacén de certificados del sistema.
Vuelve a la opción de contexto SSL obsoleta
cafilesi no se especifica.Obsoleto desde la versión 1.6: Esta opción ha quedado obsoleta. En su lugar, usa la opción URI
tlsCAFile.crl_file
string
Ruta a un archivo de lista de revocación de certificados.
archivo pem
string
Ruta a un certificado codificado en PEM para usar en la autenticación de clientes.
Vuelve a la opción de contexto SSL obsoleta
local_certsi no se especifica.Obsoleto desde la versión 1.6: Esta opción ha quedado obsoleta. En su lugar, usa la opción URI
tlsCertificateKeyFile.pem_pwd
string
Frase de contraseña para el certificado codificado PEM (si corresponde).
Vuelve a la opción de contexto SSL obsoleta
passphrasesi no se especifica.Obsoleto desde la versión 1.6: Esta opción ha quedado obsoleta. En su lugar, usa la opción URI
tlsCertificateKeyFilePassword.validación_de_certificados_débil
booleano
Desactiva la validación del certificado
true. Por defecto esfalse.Vuelve a la opción de contexto SSL obsoleta
allow_self_signedsi no se especifica.Obsoleto desde la versión 1.6: Esta opción ha quedado obsoleta. En su lugar, usa la opción URI
tlsAllowInvalidCertificates.context
resource
Opciones de contexto SSL para ser utilizadas como alternativas de seguridad para otras opciones de controlador (según se especifique). Observe que el driver no consulta el contexto de flujo por defecto.
Esta opción se admite por compatibilidad con versiones anteriores, pero debe considerarse obsoleta.
Errores/Excepciones
MongoDB\Exception\InvalidArgumentException por errores relacionados con el análisis de parámetros u opciones.
MongoDB\Driver\Exception\InvalidArgumentException para errores relacionados con el análisis de parámetros u opciones en el nivel de extensión.
MongoDB\Driver\Exception\RuntimeException para otros errores en el nivel de extensión (por ejemplo, errores de conexión).
Comportamiento
Se construye internamente un MongoDB\driver\administrador. Según la spec de descubrimiento y supervisión de servidor, MongoDB\driver\Manager::__construct() no realiza entrada/salida. Las conexiones se inicializarán on-demand, cuando se ejecute la primera operación.
Ejemplos
Conexión a un servidor autónomo
Si no especifica un $uri valor, el controlador se conecta a un servidor independiente en mongod a 127.0.0.1 través del 27017 puerto. Para conectarse a otro servidor, pase la cadena de conexión correspondiente como primer parámetro al crear la Client instancia:
$client = new MongoDB\Client('mongodb://mongodb-deployment:27017');
Conexión a un set de réplicas
El siguiente ejemplo demuestra cómo conectar a un set de réplicas con una preferencia de lectura personalizada:
$client = new MongoDB\Client( 'mongodb://rs1.example.com,rs2.example.com/?replicaSet=myReplicaSet', [ 'readPreference' => 'secondaryPreferred', ] );
Conexión con SSL y autenticación
El siguiente ejemplo demuestra cómo conectarse a un conjunto de réplicas de MongoDB con SSL y autenticación, como se utiliza para MongoDB Atlas:
$client = new MongoDB\Client( 'mongodb://myUsername:myPassword@rs1.example.com,rs2.example.com/?ssl=true&replicaSet=myReplicaSet&authSource=admin' );
Alternativamente, las credenciales de autenticación y los parámetros de URI pueden especificarse en el parámetro $uriOptions del constructor:
$client = new MongoDB\Client( 'mongodb://rs1.example.com,rs2.example.com/' [ 'username' => 'myUsername', 'password' => 'myPassword', 'ssl' => true, 'replicaSet' => 'myReplicaSet', 'authSource' => 'admin', ], );
El controlador admite opciones adicionales de SSL, que pueden especificarse en el parámetro $driverOptions del constructor. Esas opciones están cubiertas en la documentación de MongoDB\Driver\Manager::__construct().
Especificando un mapa de tipos personalizados
De forma predeterminada, la biblioteca PHP de MongoDB deserializa documentos BSON y arrays como MongoDB\Model\BSONDocument MongoDB\Model\BSONArray objetos y, respectivamente. El siguiente ejemplo muestra cómo hacer que la biblioteca deserialice todo como un array PHP, como se hacía en la mongo extensión heredada.
$client = new MongoDB\Client( null, [], [ 'typeMap' => [ 'root' => 'array', 'document' => 'array', 'array' => 'array', ], ] );
Ver también
Formato del URI de cadena de conexión manual de MongoDB
Servidor Descubrimiento y supervisión especificación