Mongo
PHP Manual

Mongo::__construct

(PECL mongo >=0.9.0)

Mongo::__constructCrear un nuevo objeto de conexión a base de datos

Descripción

public Mongo::__construct ([ string $server = "mongodb://localhost:27017" [, array $options = array("connect" => TRUE) ]] )

Si no se pasa ningún parámetro, conecta a "localhost:27017" (o lo que se indicara en php.ini en mongo.default_host y en mongo.default_port).

server debe tener la forma:

mongodb://[username:password@]host1[:port1][,host2[:port2:],...]/db

La cadena de conexión siempre comienza con mongodb://, para indicar que es una cadena de conexión de esta forma.

Si se especifica username y password, el constructor autenticará la conexión con la base de datos antes de devolver el control. Son parámetros opcionales, y si se especifican, deben estar seguidos por una @.

Al menos debe proporcionarse un host (el puerto es opcional, por omisión es 27017) y se puede conectar a tantos como se desee. Los nombres de host se separan por comas, y el constructor notificará éxito si al menos se conecta a uno de ellos. Si no se pudo conectar a ninguno, emitirá una excepción MongoConnectionException.

Finalmente, si se especificó usuario y contraseña, se puede especificar también la base de datos contra la que se autentica. Si db no se especifica, se utilizará "admin".

Parámetros

server

Nombre del servidor.

options

Array con las opciones de conexión. Las opciones disponibles actualmente son:

  • "connect"

    Si el constructor debe o no conectar antes de devolver el control. Por omisión, TRUE.

  • "timeout"

    Tiempo máximo que esperará el driver para conectar a la base de datos (en milisegundos).

  • "replicaSet"

    Nombre del conjunto de réplicas al que conectar. Si se indicara, se averiguará al maestro usando el comando de base de datos ismaster en cada semilla, de manera que el driver pudiera finalizar conectando a un servidor que ni siquiera estaba en la lista. Para más detalles, revise el ejemplo de abajo sobre réplicas.

  • "username"

    En lugar de incluirlo en la lista de host, se puede especificar aquí el nombre de usuario. Es útil en caso de que un nombre de usuario incluya un ":". Esto reemplaza un nombre de usuario situado en la lista de host.

  • "password"

    En lugar de incluirlo en la lista de host, se puede especificar aquí la contraseña. Es útil en caso de que una contraseña incluya una "@". Esto reemplaza una contraseña establecida en la lista de hosts.

  • "db"

    La base de datos para autenticarse se puede especificar aquí, en lugar de incluirlo en la lista de hosts. Esto reemplaza una base de datos dada en la lista de hosts.

Valores devueltos

Devuelve un nuevo objeto de conexión a base de datos.

Errores/Excepciones

Emite MongoConnectionException si intentara conectar a la base de datos en todos hosts proporcionados, y fallara. También emitirá MongoConnnectionException si el nombre de usuario o contraseña fueran inválidos. Revise la documentación de MongoConnectionException para conocer las excepciones y sus causas.

Historial de cambios

Versión Descripción
1.2.0

Eliminada la opción de persistencia, ya que ahora todas las conexiones lo son. Se puede seguir usando, pero no tendrá ningún efecto.

"persist"

Si la conexión debe o no ser presistente. Si se habilita, la conexión lo será. Su representación en forma de string se usa como id de la conexión, de modo que dos instancias de Mongo que se inicialicen con array("persist" => "foobar") compartirán la misma conexión, mientras que una instancia inicializada con array("persist" => "barbaz") usará una conexión a base de datos diferente.

Ahora el parámetro "replicaSet" espera un strings, y no un booleano (aunque todavía se aceptaría un booleano).

1.0.2 Cambiado el constructor para que acepte un array de opciones. Antes de 1.0.2, el constructor tenía los siguientes parámetros:
server

Nombre de servidor.

connect

Parámetro booleano opcional para especificar si el constructor debe o no conectar a la base de datos antes de devolver el control. Por omisión, TRUE.

persistent

Si la conexión debe o no ser persistente.

paired

Si la conexión debe vincularse.

1.0.9 Añadida la opción replicaSet.
1.2.0 Añadidas las opciones username y password.

Ejemplos

Ejemplo #1 Ejemplo de conjunto de réplicas con Mongo::__construct()

Este ejemplo muestra cómo conectar el driver a un conjunto de réplicas. Asume que hay un conjunto de tres servidores: sf1.example.com, sf2.example.com, y ny1.example.com. El maestro puede ser cualquiera de ellos.

<?php

// lista de nombes de servidores separadas por comas
$m1 = new Mongo("mongodb://sf2.example.com,ny1.example.com", array("replicaSet" => "myReplSet"));

// sólo es necesaria una semilla, y el driver obtendrá la lista completa y encontrará
// al maestro de esta semilla
$m2 = new Mongo("mongodb://ny1.example.com", array("replicaSet" => "myReplSet"));

?>

Si el maestro falla, el driver averiguará qué servidor secundario se convierte en el nuevo maestro y comenzará a usar automáticamente la conexión. La recuperación automática no funcionará correctametne si no se especificara replicaSet.

Al menos debe haber una semilla funcionando de la lista de semillas para que el driver se conecte al conjunto de réplicas.

Si se incluyen semillas de dos juegos de replicas separados, el comporamiento será inesperado.

Para más información, revise la » documentation sobre conjuntos de réplicas.

Ejemplo #2 Conectando a un socket de dominio

En la versión 1.0.9 o superior, se puede usar un socket de dominio UNIX para conectar a una instancia de MongoDB local. Es ligeramente más rápido que una conexión de red.

En la versión 1.5.0, el servidor MongoDB abre automáticamente un socket en /tmp/mongodb-<port>.sock. Puede coenctarse a él especificando la ruta en la cadena de conexión:

<?php

// Servidor MongoDB funcionando en local en el puerto 20000
$m = new Mongo("mongodb:///tmp/mongodb-20000.sock");

?>

Se puede combinar con las opciones que se desee:

<?php

// al conectar al socket de dominio, retrocede a la conexión a localhost
$m = new MongoDB("mongodb:///tmp/mongodb-27017.sock,localhost:27017");

?>

Ejemplo #3 Ejemplo de autenticación con Mongo::__construct()

El usuario debe existir en la base de datos admin antes de intentar autenticarlo. Puede crearse uno con la consola de Mongo ejecutando:

> use admin
switched to db admin
> db.addUser("testUser", "testPass");
{
        "_id" : ObjectId("4b21272fd9ab21611d19095c"),
        "user" : "testUser",
        "pwd" : "03b9b27e0abf1865e2f6fcbd9845dd59"
}
>

Tras crear un usuario con, en este caso, el nombre "testUser" y la contraseña "testPass", puede crearse una conexión autenticada:

<?php

$m 
= new Mongo("mongodb://testUser:testPass@localhost");

?>

Mongo
PHP Manual