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.