Blog de Gonzalo

MONGODB Y PHP

MongoDB usa JSON y en PHP se gestiona todo con arrays. Y es el caso de las bases de datos noSQL. La verdad es que es bastante sencillo de aprender y usar:
-Crear la base de datos: Se puede hacer de dos maneras.

$this->obj_mongo = new Mongo();
$db = $this->obj_mongo->usuarios; //Si no existe la bbdd la crea
//Después de crear / acceder a la base de datos hay que crear / acceder a la colección de datos a manejar
$this->collection = $db->users;

-Insertar datos:
//Los indices del array son los campos.
$newData = array( "username" => "Pedro", "password" => md5("mipassword"), "year" => "1940" );
$this->collection->insertOne($newData);

-Actualizar datos:
//ID ejemplo para actualizar
$id = '50d48a935f2d1ed80e000003';
//Array con los nuevos valores si se quiere mantenr un valor se respeta el valor antiguo
$updateData = array( "username" => "Pepe", "password" => md5("maspassword"), "year" => "1999" );
$this->collection->updateOne(array("_id" => new new \MongoDB\BSON\ObjectID($id)),$updateData);

-Borrar datos:
//ID ejemplo para borrar
$id = '50d48a935f2d1ed80e000003';
//Array con los nuevos valores si se quiere mantenr un valor se respeta el valor antiguo
$this->collection->deleteOne(array("_id" =>new \MongoDB\BSON\ObjectID($id)));

-Buscar datos: Hay dos maneras. Si se quieren buscar varios registros, se usa find y si se quiere buscar un registro se usa findOne. Ambas búsquedas aceptan criterios y operadores lógicos y de comparación. La función findeOne es igual a find en funcionalidad:
//Busqueda de varios registros con operadores lógicos en este caso AND
$cursor = $this->collection->find(array('$and' => 
				array(array("username" => "Pedro"), array("year" => "1940"))));
//Busqueda por un campo
$cursor = $this->collection->find(array('username' => 'Juan'));
//Busqueda por un campo con operador de comparación lt menor que
$users = $collection->find(array('year' => array( '$lt' => 1950)));

-Mostrar datos: Hay dos maneras, dependiendo si se usa find o findOne en la búsqueda:
//Usando find para la búsqueda. 
$cursor = $this->collection->find();
foreach ($cursor as $obj) {
echo $obj['username'].' '.$obj['password'].' '.$obj['year'].' '.$obj['_id'].'
';
}

En mi pefil de github teneés una clase para ahcer lo que os he comentado en este post:
MongoDB y php

Compartir en twitter