Saltar al contenido

mongodb conectarse usando php

Hola usuario de nuestra página web, descubrimos la solución a lo que necesitas, desplázate y la verás un poco más abajo.

Solución:

Opción 1

Pase las credenciales a través del segundo argumento al Mongo constructor

$db = new Mongo('mongodb://localhost', array(
    'username' => 'abc',
    'password' => '[email protected]',
    'db'       => 'abc'
));

opcion 2

Utilizar el MongoDB::authenticate() método

$m = new Mongo();
$db = $m->abc;

$db->authenticate('abc', '[email protected]');

Tenga en cuenta…

Hay una gran desventaja en este método: si la conexión se interrumpe y luego se vuelve a conectar, la nueva conexión no se autenticará. Si usa el formato URI, el controlador PHP autenticará automáticamente al usuario cada vez que se realice una nueva conexión.

Actualización 2014

Instanciando Mongo directamente ahora está en desuso. El consejo es usar MongoClient en su lugar con los mismos argumentos que el anterior. Por ejemplo

$m = new MongoClient('mongodb://localhost', [
    'username' => 'abc',
    'password' => '[email protected]',
    'db'       => 'abc'
]);

Actualización 2019

He usado la versión 7.0 de php en ubuntu 16.04. Esta es una información detallada para resolver el problema de conectividad. (Omita las partes que ya ha hecho) Primero instalé manualmente mongodb y luego el controlador mongodb-php para ello.

1) Instalación de mongo db. Introduzca los siguientes comandos:

$ sudo apt-key adv --keyserver hkp://keyserver.ubuntu.com:80 --recv EA312927

$ echo "deb http://repo.mongodb.org/apt/ubuntu xenial/mongodb-org/3.2 multiverse" | sudo tee /etc/apt/sources.list.d/mongodb-org-3.2.list

$ sudo apt-get update

$ sudo apt-get install -y mongodb-org

Para iniciar correctamente Mongdb como un servicio, es decir, iniciar automáticamente Mongodb cuando se inicia el sistema, siga los siguientes pasos:

Cree el archivo mongodb.service en /etc/systemd/system/ ingresando el comando:

$ sudo nano /etc/systemd/system/mongodb.service

Pegue los siguientes contenidos en él:

[Unit]
Description=High-performance, schema-free document-oriented database
After=network.target

[Service]
User=mongodb
ExecStart=/usr/bin/mongod --quiet --config /etc/mongod.conf

[Install]
WantedBy=multi-user.target

Luego ingrese los siguientes comandos:

$ sudo systemctl start mongodb

$ sudo systemctl enable mongodb

2) Instalación del controlador mongo-php:

$ sudo pecl install mongodb

También puede recibir un error: phpize no encontrado. Phpize es un comando que se utiliza para crear un entorno de construcción. Este error podría aparecer en el momento de la instalación de cualquier extensión pecl. Para resolver este problema del comando phpize no encontrado, el usuario debe instalar el paquete php5-dev. Para instalarlo ingrese el comando:

 $ sudo apt-get install php7.0-dev

Luego, en el archivo php.ini que se encuentra en el directorio /etc/php/7.0/apache2, agregue la extensión mongo db:

$ sudo nano /etc/php/7.0/apache2/php.ini 

Agregue la siguiente línea en el archivo:

extensión = mongodb.so;

(Para que lo sepas, la ubicación exacta del archivo mongodb.so está en /usr/lib/php/20151012/mongodb.so).

Entonces mongo db se instala junto con su controlador.

3) Ahora tenga en cuenta que las clases de mongo-php han cambiado. La mayoría de los recursos disponibles en la red brindan soluciones utilizando clases antiguas que se reemplazan. A continuación se muestran los enlaces a los que puede consultar:

http://php.net/manual/en/set.mongodb.php

http://zetcode.com/db/mongodbphp/

Aquí hay algunos comandos para las operaciones básicas de la base de datos:

$mng = new MongoDBDriverManager(); // Driver Object created

Para insertar datos en la base de datos:

$bulk = new MongoDBDriverBulkWrite;

$doc = ["_id" => new MongoDBBSONObjectID, "data" => $someData, "info" => $someInfo];

$bulk->insert($doc);

$mng->executeBulkWrite('dbName.collectionName', $bulk);

Para obtener datos:

$query = new MongoDBDriverQuery([]); 

$rows = $mng->executeQuery("dbName.collectionName", $query);

foreach ($rows as $row) 
    
         echo "$row->data - $row->infon";
    

Utilizando nuevo Mongo(); puede crear problemas

“Advertencia: la instanciación de esta clase emitirá una advertencia E_DEPRECATED y desactivará las escrituras reconocidas”. – php.com

Utilice MongoClient() en lugar

$m = new MongoClient("mongodb://testUser:[email protected]:myportnumber");

Si eres capaz, puedes dejar una noticia acerca de qué te ha impresionado de esta reseña.

¡Haz clic para puntuar esta entrada!
(Votos: 0 Promedio: 0)



Utiliza Nuestro Buscador

Deja una respuesta

Tu dirección de correo electrónico no será publicada. Los campos obligatorios están marcados con *