Вы находитесь на странице: 1из 83

BASES DE DATOS NO RELACIONALES

CON MONGODB

Universidad de Manizales
Noviembre 21 de 2015

Msc. Juan Pablo Ospina


Ing. De sistemas y computacin
@gnupablo
SOBRE EL EXPOSITOR

- Egresado U. de Caldas

- Maestra en seguridad de las tecnologas de


informacin y comunicaciones por UOC, UAB,
URIV.

- Consultor y desarrollador independientes


(Citytaxi, SiembraViva, Epikcv, EmotionalWorld,
Bestbag, Growthwheel etc.)

- Emprendedor, amante del software libre, el


ajedrez y el ftbol.
CONTENIDO DEL TALLER

Breve introduccin a las bases de datos no


relacionales y relacionales.
Contexto de Mongodb.
Como mongodb almacena los datos.
CRUD a una base de datos mongodb
Profundizamos en los Update
Diseo de base de datos con mongodb
Consultas un poco mas completos
Como se conecta con un lenguaje.
TIPOS DE BASE DE DATOS

RELACIONALES
NO SQL Multidimensional
BASE DE DATOS RELACIONALES

Problema: No exista
una implementacin
estndar La forma
Sistema de archivos
de acceder a los
planos fue creado.
datos.

Las bases de datos


relacionales eran la
respuesta. 70's
BASES DE DATOS NO RELACIONALES

Problema: No
controlan grandes
datos.
Las bases de datos
relacionales fueron
creadas.

Las bases de datos


no sql eran la
respuesta.
EJEMPLO DISEO RELACIONAL
EJEMPLO DISEO NoSQL

- Simple de administrar.

- Simple para acceder

- Simple de disear
ESCALAN DE FORMA HORIZONTAL

MAESTRO

ESCLAVOS
TIPOS DE BASE DE DATOS NoSQL

LLAVE-VALOR

MAPEO DE COLUMNAS

ORIENTADA A DOCUMENTOS
QU VENTAJAS OFRECEN?

- KISS (Keep it simple, stupid!)

- Rendimiento

- Fcil de escalar de forma


horizontal
QU NO OFRECEN LAS DB NoSQL?

- No tiene soporte para consultar varias


documentos o tablas a la vez (joins).

- No ofrece soporte para transacciones


complejas.

- No tiene soporte para las restricciones


(Null, unique value)
QU ES MONGODB?

MongoDB es una solucin escalable y de alto


rendimiento, es una base de datos de cdigo abierto,
escrita en C++.

Sus caractersticas principales son:

Orientada a documentos (almacenamiento BSON).


Arrays y documentos anidados.
ndices para realizar consultas mas rpidas.
Controladores para los lenguajes mas utilizados.
HISTORIA Y QUIENES LO
IMPLEMENTAN
Tendencia trabajos MongoDB
Cmo almacenan los datos?

MongoDB Relacionales (Mysql,


Postgres, Oracle)

Colecciones Tablas
Documentos BSON vs Tablas?
Las colecciones y documentos

SERVIDOR

BASE DE DATOS

contiene COLECCIONES

contiene DOCUMENTOS
Mongodb Almacenamiento

Las colecciones son bsicamente bolsas de


documentos , o bolsas de objetos BSON

- Diferentes campos
- Diferentes tamaos
- Indexables
COLECCIN Y DOCUMENTOS
EJEMPLO
Formato
{ tipo JSON
"_id" : ObjectId("55dc59bdc904711e10000001"),
Nombre: Juan Pablo,
Apellido: Ospina,
Tel: 339393939
},
{
"_id" : ObjectId("55dc59bdc904711e10000002"), Coleccin
Nombre: Pepito,
Apellido: Perez, Documento
Tel: 339393939
},
{
"_id" : ObjectId("55dc59bdc904711e10000003"),
Nombre: Antonio,
Apellido: Osorio,
Tel: 339393939
}
Estructura con vectores

{
"_id" : ObjectId("55dc59bdc904711e10000001"),
Nombre: Juan Pablo,
Apellido: Ospina,
Gustos: [Computacin, Software libre]
},
{
"_id" : ObjectId("55dc59bdc904711e10000002"),
Nombre: Pepito,
Apellido: Perez,
Gustos: [Msica, Pelculas]
},
{
"_id" : ObjectId("55dc59bdc904711e10000003"),
Nombre: Antonio,
Apellido: Osorio,
Gustos: [Deporte, Libros]
}
Diferente tamaos y campos

{
"_id" : ObjectId("55dc59bdc904711e10000001"),
Nombre: Juan Pablo,
Apellido: Ospina,
Gustos: [Computacin]
},
{
"_id" : ObjectId("55dc59bdc904711e10000002"),
Nombre: Pepito,
Apellido: Perez,
Proyectos: [sage-math,ESAPI]
},
{
"_id" : ObjectId("55dc59bdc904711e10000003"),
Nombre: Antonio,
Apellido: Osorio,
Gustos: [Deporte, Libros, Cine]
}
Un documento un poco ms
complejo

{
"_id" : ObjectId("55dc59bdc904711e10000001"),
Nombre: Juan Pablo,
Apellido: Ospina,
Gustos: [Computacin]
Contacto: {
Twitter: @gnupablo,
Email: gnu.pablo@gmail.com Documento anidado
}
},
{
"_id" : ObjectId("55dc59bdc904711e10000002"),
Nombre: Pepito,
Apellido: Perez,
Proyectos: [sage-math,ESAPI]
},
Comenzando con la Consola

$ mongo Nuestra
MongoDB shell version: 3.0.7 terminal
connecting to: test
>

Los comandos de mongo van despus


del smbolo >
Comenzando con la Consola

> var usuario = { "nombre" : "juan", "edad":"25"}


> usuario
{ "nombre" : "juan", "edad" : "25" }
>

En el shell podemos interactuar Son similares a los objetos


utilizando javascript basados en un campo y un valor
Comenzando con la Consola

MongoDB viene con mtodos de ayuda para hacer ms fcil la interaccin con
la base de datos

> use taller


switched to db taller
> db
taller

Selecciona la base de datos o si no existe la crea al


momento de escribir sobre esta.
Comenzando con la Consola

MongoDB viene con mtodos de ayuda para hacer ms fcil la interaccin con
la base de datos
Muestra las lista de comandos

> help
> use taller db.help() .
switched to db taller ..
> db > show dbs
taller Test 0.078GB
Taller 0.078GB

Muestra las lista de bases de


Selecciona la base de datos o si no existe datos con su nombre y tamao
la crea al momento de escribir sobre esta.
Insertando un documento en una
coleccin
Podemos utilizar el mtodo insert() de una coleccin para guardar un
documento usuario en la coleccin usuarios.

Para escribir en la base de datos tenemos que especificar


la coleccin y que operacin se va ejecutar.

> db.usuarios.insert( {nombre: antonio, edad:45})


WriteResult({ "nInserted" : 1 })

Esta coleccin no existe entonces va a ser


creada de forma automtica
Consultando los documentos de
una coleccin
Podemos utilizar el mtodo find() de una coleccin para consultar los usuarios.

El id nico es generado de forma automtica.

> db.usuarios.find()
{ "_id" : ObjectId("564ea458619102b4d26aa33f"),
"nombre" : "juan",
"edad" : "25" }
{ "_id" : ObjectId("564ea4ee619102b4d26aa340"),
"nombre" : "antonio",
"edad" : "45" }
Consultando un documento de una
coleccin
Podemos ejecutar un query de igualdad especificando el campo que se quiere
consultar junto con el valor.

> db.usuarios.find({nombre:juan})
{ "_id" : ObjectId("564ea458619102b4d26aa33f"),
"nombre" : "juan",
"edad" : "25" }

Distingue maysculas de minsculas


Qu formatos puede almacenar?

BSON:

- Strings = nombre ObjectI = ObjectId( )

- Nmeros = 40 - 3.14 Date = ISODate( )

- Booleanos = true y false

- Arrays = [prueba1, prueba2]

- Objetos = {tipo : empleado}

- Null
Almacenando un documento ms
complejo

> db.platos.insert({
"nombre" : "lasagna",
"precio" : 10,
"fecha" : new Date(2014,8,14),
"ingredientes" : [ "pollo", "pasta", "queso" ],
"calificacin" : { "sabor" : 5, "presentacin" : 3 } })
Encontrar un plato por ingrediente

Los vectores son tratados de forma individual, esto significa que se pueden consultar
especificando el nombre del campo del vector y el valor

> db.platos.find({"ingredientes":"pollo"})
{ "_id" : ObjectId("564eb95e0d71c45c6e4f9be3"),
"nombre" : "lasagna",
"precio" : 10,
"fecha" : ISODate("2014-09-14T05:00:00Z"),
"ingredientes" : [ "pollo", "pasta", "queso" ] }
Encontrar un plato por calificacin

Es posible consultar los platos por calificacin, especficamente por su sabor


utilizando la notacin punto para especificar cual campo embebido se quiere utilizar.

> db.platos.find({"calificacin.sabor":5})
{ "_id" : ObjectId("564ebcfa0d71c45c6e4f9be4"),
"nombre" : "lasagna",
"precio" : 10,
"fecha" : ISODate("2014-09-14T05:00:00Z"),
"ingredientes" : [ "pollo", "pasta", "queso" ],
"calificacin" : { "sabor" : 5, "presentacin" : 3 } }
Validaciones en los Insert

Si se quiere insertar un nuevo plato y por casualidad nos equivocamos ingresando el


precio como string, el plato debera ser almacenado incluso si los otros platos tienen
en ese campo valores enteros.

> db.platos.insert({
"nombre" : "perro caliente",
"precio" : diez dolares,
"fecha" : new Date(2014,8,14),
"ingredientes" : [ "pollo", "pasta", "queso" ],
"calificacin" : { "sabor" : 5, "presentacin" : 3 } })
Validaciones en los Insert

Mongo solo hace cumplir algunas reglas, lo que quiere decir que debemos
encargarnos en el lado del cliente y del servidor que los datos ingresados son
correctos.

- Comprueba que no se repitan el campo _id.

- No tiene errores de sintaxis.

- Y el tamao del documento es mejor que 16 mb.


Eliminar un solo documento

El mtodo remove() de la coleccin elimina los documentos que son igual a la


consulta.

> db.platos.remove({"nombre" : "perro caliente"})


WriteResult({ "nRemoved" : 1 })
Eliminar mltiples documentos

El mtodo remove() de la coleccin igual puede elimina mltiples documentos.

> db.platos.remove({"nombre" : "lasagna"})


WriteResult({ "nRemoved" : 2 })
> db.platos.remove({})
WriteResult({ "nRemoved" : 3 })
Actualizar un documento

Si se realiz en algn caso un error sobre un documento es posible actualizarlo con el


mtodo update().

Parmetro de la consulta

> db.platos.update({"nombre" : "hamburguesa"},


{$set : {precio : 12}})

Parmetro del update

Hay que tener en cuenta que el update slo


aplica al primer valor del documento
Actualizar un documento II

Es posible asignar un tercer parmetro como opcin. Ej

> db.platos.update({"nombre" : "hamburguesa"},


{$set : {precio : 12}}, {"multi": true})
> WriteResult({
"nMatched" : 3,
"nUpserted" : 0,
"nModified" : 3 })

3 documentos fueron encontrados y


3 modificados.
Actualizar un documento III

Si el parmetro del update solo consiste en un campo-valor entonces todo el


documento excepto el _id va hacer reemplazado.

> db.platos.update({"nombre" : "hamburguesa"},


{precio : 12})
>

Podemos tener resultados inesperados,


en este caso todo el documento es Es til para importar
reemplazado con el campo precio: 12 datos.
Almacenar el nmero de platos
servidos

Ahora podemos crear una coleccin llamada logs para almacenar el nmero de platos
servidos.

> { _id: ObjectId(.),


Plato: Hamburguesa
contador: 5 }
Aumentar el contador del log

Podemos utilizar el operador $inc para incrementar el valor contador del documento
log

> db.logs.update({plato:hamburguesa},
{$inc: {contador: 1}})

Si el valor no existe el campo es creado de forma


automtica con el valor definido.
Actualizando un documento que no
existe

Si intentamos actualizar un documento que no existe, entonces no pasa nada en la


operacin.

> db.logs.update({plato:lasagna},
{$inc: {contador: 1}})

WriteResult({ "nMatched" : 0,
"nUpserted" : 0,
"nModified" : 0 })
Actualizando un documento que no
existe

En caso que queramos crear un documento si este no no existe en el update


podemos utilizar la opcin upset.

> db.logs.update({plato:lasagna},
{$inc: {contador: 1}}
{upsert: true})

WriteResult({ "nMatched" : 0,
"nUpserted" : 1,
"nModified" : 0 })
EJERCICIOS

Crear una Base de datos de la Universidad de Manizales que almacene la


informacin sobre todos sus miembros. De cualquiera de sus miembro se almacena
el nombre, direccin, telfono y correo electrnico. Los profesores adems tienen el
departamento al que pertenecen y su profesin, adems de las lista de clases que
imparten. Los alumnos tienen de ms un cdigo y el nombre de la carrera en la que
se encuentran matriculados, nmero de semestre cursados y adems el nmero de
materias vistas por semestre (semetre1: 3, semestre2: 5, semestre3: 2 etc.). Del
personal se almacena la unidad administrativa a la que pertenecen, la fecha de
inicio y su cargo.

+ Ingresar 3 profesores (helena, carlos, antonio) (al menos que dicte matemticas)
+ Ingresar 5 estudiantes (mara, juliana, toms, juan, lucia) al menos dos cursando
biologa.
+ Ingresar 2 del personal (pedro, andrs)

Las clases que estn disponibles son: matemticas, biologa, programacin, arte,
qumica, filosofa, gentica

Las carreras son: biologa, sistemas y artes


EJERCICIOS

Consultar todos los profesores que dictan matemticas.


Actualizar el correo del primer profesor que dicta matemticas o del nico.
Encontrar los estudiantes que estudian biologa.
Actualizar el nombre de la carrera por biologa y qumica. (todos)
Consultar todos las personas que hacen parte del personal.
Eliminar todos los documentos de la coleccin personal.
Aumentar en 1 el nmero de semestres de Toms
Aumentar en 2 el nmero de semestres de Juliana
Eliminar al profesor Antonio.
Crear un campo salario con un valor de 1500000 en el trabajador Andrs
Mejorando las colecciones

En el proceso de construccin y desarrollo de una base de datos y en general de un


sistema que las utilicen es necesario realizar algunos cambios como quitar campos,
cambiar el nombre etc. Para el primer caso existe el operador $unset

> db.logs.update({plato:lasagna},
{$unset: {contador: }}
{multi: true})

WriteResult({ "nMatched" : 2,
"nUpserted" : 0,
"nModified" : 2 })
Mejorando las colecciones II

Otro operador til en la funcin update es $rename

> db.logs.update({plato:lasagna},
{$rename: {contador: npedido}}
{multi: true})

WriteResult({ "nMatched" : 2,
"nUpserted" : 0,
"nModified" : 2 })
Actualizando un array

Si tenemos una lista de ingredientes: [frijol,arroz,huevo] y queremos actualizar


el valor huevo

> db.platos.update({"ingredientes":"huevo"},
{"$set":{"ingredientes":"carne"}})

WriteResult({ "nMatched" : 1,
"nUpserted" : 0,
"nModified" : 1 })

Seria reemplazado todo el


vector por el valor carne
Actualizando un array

Como los valores de un array son de forma individual podemos acceder a ello con
la notacin punto y especificando la ubicacin que tiene el valor en el vector.

Ingredientes.0 Ingredientes.1 Ingredientes.2

> [frijol,arroz,huevo]

> db.platos.update({"nombre":"bandeja paisa"},


{"$set":{"ingredientes.2":"carne"}})
Actualizando un array II

Qu pasa si queremos actualizar un valor en un array en varios documentos a la


vez pero la posicin del valor es diferente en cada uno?

Ingredientes.2

> [frijol,arroz,huevo]

> [lentejas,huevo,arroz]

Ingredientes.1
Actualizando un array II

Para realizar la actualizacin a todos los documentos independiente de su posicin


se puede utilizar la notacin $

> db.platos.update({"ingredientes":"huevo"},
{"$set":{"ingredientes.$":"carne"}},{multi:true})
Eliminando el primer o ltimo
elemento de un array

El operador $pop elimina el primer elemento o el ltimo elemento de un array

> db.platos.update({"nombre":"bandeja paisa"},


{"$pop":{"ingredientes":1}},{multi:true})

1 Elimina el ltimo elemento.


1 Elimina el primer elemento.
Agregar un valor al final de
un array

El operador $push inserta un valor al final del array.

> db.platos.update({"nombre":"bandeja paisa"},


{"$push":{"ingredientes":carne}},{multi:true})
Agregar valor nico en
el array

El operador $addToSet inserta un valor al final del array excepto que ya se


encuentre presente.

> db.platos.update({"nombre":"bandeja paisa"},


{"$addToSet":{"ingredientes":frijol}},{multi:true})
Eliminando valores de un array

El operador $pull elimina una instancia de un valor determinado

> db.platos.update({"nombre":"bandeja paisa"},


{"$pull":{"ingredientes":frijol}},{multi:true})
Actualizando un documento
embebido

Podemos actualizar un documento embebido con la notacin punto especificando el


campo que queremos modificar.

> db.platos.update({"nombre":"bandeja paisa"},


{"$set":{"calificacion.sabor":10}})
Operadores tiles para actualizar

Mongodb provee una variedad de formas para modificar o actualizar


valores

- $max (Actualiza si el valor es mayor que el valor actual o inserta si esta


vaco).

- $min (Actualiza si el valor es menor que el valor actual o inserta si es


vaco).

- $mul (Multiplica el nuevo valor con el valor actual o si es vaco inserta un 0)


EJERCICIOS

Eliminar el campo profesin de la coleccin profesores.

Cambiar el nombre de cdigo por el de cc en la coleccin estudiante.

Aumentar el nmero de materias vistas en el semestre 2 del primer


usuario.

Aumentar el nmero de materias vistas en 1 del primer semestre de todos


los estudiantes.

Agregar la materia filosofa al primer profesor.

Eliminar la materia matemticas del profesor que la tenga asignada


Diseo de una base de datos en
MongoDB

Mongodb nos ofrece documentos ricos en datos y opciones


Tiene el principio de
Herencia

Figuras
- rea

Rectngulo
Circulo Cuadrado
- base
radio -l
- altura
Tiene el principio de
Herencia

id tipo rea radio l base altura


1 circulo 3.14
2 cuadrado 4 2
3 rectngulo 10 5 2

> db.figuras.find()
{_id: 1, tipo: circulo, rea: 3.14, radio: 1}
{_id: 2, tipo: cuadrado, rea: 4, l: 2}
{_id: 3, tipo: rectngulo, rea: 10, base: 5, altura: 2}
Uno a muchos:
Comentarios en un Blog

Se puede solucionar con arrays embebidos / Llaves en un array.

{ "_id" : ObjectId("564f7255021948d00b4e47d4"),
autor: pepito,
fecha: ISODate("2015-10-21T05:00:00Z"),
texto: Camino a la luna,
tags: [comics, aventura],

Comentarios: [
{
Autor: Alejandra,
fecha: ISODate("2015-11-08T05:00:00Z"),
texto: Es un gran comic,
Voto: 5
}],
contador_comentarios: 1
}
Uno a muchos:
Comentarios en un Blog

Se puede solucionar con arrays embebidos / Por referencia.

{ "_id" : ObjectId("564f7255021948d00b4e47d4"),
autor: pepito,
fecha: ISODate("2015-10-21T05:00:00Z"),
texto: Camino a la luna,
tags: [comics, aventura],

Comentarios: [
{
Autor: Alejandra,
fecha: ISODate("2015-11-08T05:00:00Z"),
texto: Es un gran comic,
Voto: 5
}],
contador_comentarios: 1
}
Uno a muchos:
Comentarios en un Blog

Se puede solucionar con arrays embebidos / Por referencia.

{ "_id" : ObjectId("564f7255021948d00b4e47d4"),
autor: pepito,
fecha: ISODate("2015-10-21T05:00:00Z"),
texto: Camino a la luna,
tags: [comics, aventura]
}

Comentario
{
_id: ObjectId("564f7255021948d00b4e47d5")
post_id: ObjectId("564f7255021948d00b4e47d4"),
autor: Alejandra,
fecha: ISODate("2015-11-08T05:00:00Z"),
texto: Es un gran comic,
Voto: 5
}
Referencia vs Embebido

Embeber cuando los muchos objetos aparecen


siempre con el padre o la mayora de veces.

Usar una referencia cuando se quiera mayor


flexibilidad.
Muchos a Muchos: Categoras de un
producto

- Un producto puede estar en muchas categoras.


- Una categora puede estar en muchos productos.

Producto
id Producto
Categora

- producto_id
Categora - categora_id
id
Muchos a Muchos: Categoras de un
producto

Productos

{ "_id" : ObjectId("564f7255021948d00b4e47d4"),
nombre: Libro de aventuras,
categoria_id: [ ObjectId("564f7255021948d00b4e47f4"),
ObjectId("564f7255021948d00b4e47r5")]}
}

Categoras

{ "_id" : ObjectId("564f7255021948d00b4e47f4"),
nombre: aventura,
productos_id: [ ObjectId("564f7255021948d00b4e47d4"),
ObjectId("564f7255021948d00b4e47t8")]
}
Muchos a Muchos: Categoras de un
producto

Productos

{ "_id" : ObjectId("564f7255021948d00b4e47d4"),
nombre: Libro de aventuras,
categoria_id: [ ObjectId("564f7255021948d00b4e47f4"),
ObjectId("564f7255021948d00b4e47r5")]}
}

Categoras

{ "_id" : ObjectId("564f7255021948d00b4e47f4"),
nombre: aventura,
}
EJERCICIO: Comercio Electrnico

Disear una base de datos en nosql para una plataforma de comercio electrnico que
vende msica y pelculas. Todos los productos tienen un nmero de referencia, un
titulo, una descripcin, adems tienen algunos datos de envo como el peso y sus
dimensiones, ancho, alto y profundidad. El precio esta compuesto por uno precio bruto
y precio neto. Los productos de tipo msica tienen en sus detalles el artista, la lista de
gneros al que pertenece el lbum y la lista de pistas. Por otro lado el producto pelcula
tiene en sus detalles el director, la lista de actores y los idiomas. Adems los productos
tienen mltiples comentarios de los usuarios con el nombre del usuarios que lo publico
y el texto

Un comercio electrnico genera una orden despus de haber comprado algo, para eso
se tiene que almacenar la fecha de creacin, los datos de envo (cliente, direccin,
ciudad), el pago que tiene el mtodo (visa, mastercard, amex) junto a un id de la
transaccin, por ltimo esta compuesto por la lista de productos y el total de la compra.

Para finalizar una plataforma de e-commerce necesita de un carrito de compras que


tiene un estatus como activo o inactivo, la cantidad de productos que tiene el carrito de
compras, el total del carro (dinero) y la lista de productos. (tener en cuenta que en un
carro de compras generalmente se muestra solo el nombre y el precio del producto).
Consultar con mltiples criterios

Las consultas pueden ser basadas en mltiples criterios, solo es necesario pasarlos
separados por comas

> db.platos.find({nombre:lasagna,"ingredientes":"pollo"})
{ "_id" : ObjectId("564eb95e0d71c45c6e4f9be3"),
"nombre" : "lasagna",
"precio" : 10,
"fecha" : ISODate("2014-09-14T05:00:00Z"),
"ingredientes" : [ "pollo", "pasta", "queso" ] }
Consultar por comparaciones

Mongodb provee una variedad de operadores para comparar un valor en


especifico.

- $gt (mayor que)

- $gte (mayor o igual que)

- $lt (menor que)

- $lte (menor o igual que)

- $ne (no es igual)


Encontrar un plato con un precio
menor a 10 usd

Podemos encontrar el documento indicado con el operador $lt

> db.platos.find({precio:{$lt:10})
Encontrar un plato en un rango de
precio

Podemos encontrar el documento indicado combinando los operadores $gt y $lt

> db.platos.find({precio:{$gt:7,$lt:12})
Consulta no es igual a

Podemos encontrar el documento indicado utilizando el operador $ne

> db.platos.find({nombre:{$ne:lasagna)
Consultar un rango en un array

Por ejemplo cuando se tiene un array con un conjunto de nmeros y se quiere utilizar
los operadores $lt o $gt podemos hacerlo con el operador $elemMatch.

> db.platos.find({talla:{$elemMatch:{$gt:36,$lt:38})
Ejercicio

Consultar en la coleccin orden una orden que tengo un pedido menor de


40 usd.

Consultar los carritos de compra que tengan un rango entre los 10 y 20


dolares en total.

Agregar el campo vendedor a cada producto y poner todos con el


vendedor hp excepto uno que va a ser ibm.

Consultar con el operador $ne todos los productos que su vendedor no sea
hp.
Instalacin de ejemplo php

Instalar PHP Driver:


$ sudo apt-get install php5-dev php5-cli php-pear
$ sudo pecl install mongo

Abrir el archivo php.ini y agregar:


extension=mongo.so
Conexin en php

<?php
//conecta a localhost:27017
$connection = new Mongo();

//conecta a un host remoto (puerto por omisin: 27017)


$connection = new Mongo( "example.com" );

// conecta a un host remoto en el puerto facilitado


$connection = new Mongo( example.com:65432" );
?>

Conexin persistente

<?php
$connection = new Mongo("localhost:27017",
array("persist" => "x"));
?>
Conexin en php

<?php
//conecta a localhost:27017
$connection = new Mongo();

//conecta a un host remoto (puerto por omisin: 27017)


$connection = new Mongo( "example.com" );

// conecta a un host remoto en el puerto facilitado


$connection = new Mongo( example.com:65432" );
?>

Conexin persistente

<?php
$connection = new Mongo("localhost:27017",
array("persist" => "x"));
?>
Almacenando un documento en php

<?php
try{
$mongo= new Mongo("localhost:27017", array("persist" => "x"));
$db = $mongo->comedy;
$collection = $db->cartoons;

$obj = array( " title " => "Calvin and Hobbes", "author" => "Bill
Watterson" );
$collection->insert($obj);

$obj = array( "title" => "XKCD", "online" => true );


$collection->insert($obj);

$cursor = $collection->find();
foreach ($cursor as $obj) {
echo $obj["title"] . "\n";
}
} catch (MongoCursorException $e) {
die("Query failed " . $e -> getMessage());
}
MUCHAS
GRACIAS!

Вам также может понравиться