Mongodb: Un pequeño sorbo

Post on 14-Apr-2017

558 views 1 download

Transcript of Mongodb: Un pequeño sorbo

http://abirtone.com/formacion/mongodb-esencial/

vcuervo@gmail.com

@victor_cuervo

Un pequeño sorbo.

MongoDB

Busca, lo encontrarás !

http://twitter.com/victor_cuervo

https://github.com/victorcuervo/lineadecodigo_mongodb

http://www.slideshare.net/victorcuervo/

http://lineadecodigo.com

¿Qué es MongoDB?Una de CRUDModelos de Datos con ArraysMongoDB Shell. Un poco de JavascriptPython + MongoDB = PymongoY ahora ¿qué?

Índice

¿Qué es MongoDB?

• Columna• Hadoop/HBase, Cassandra

• Documento• MongoDB, CouchDB

• Clave/Valor• DynamoDB, Redis

• Grafos• Neo4j, Infinite Graph

http://nosql-database.org

Bases de Datos NOSQL

•Base de datos NOSQL orientada a documentos (BSON-JSON).

•Trabajo con modelos de datos flexibles.•Proporciona alto rendimiento y alta escalabilidad.

•Ofrece múltiples APIs sobre diferentes lenguajes de programación: java, python, shell, nodejs, go,…

•Maneja bases de datos, colecciones, campos, indices,…y no permite hacer un xxxxxx join. $lookup

MongoDB

{ "_id": ObjectId("565914732c23d80f730a1f49"), "gender": "M", "name": “Julio Sanchez", "username": "jsanchezs", "birthday": "06/11/1977", "email": "jsanchez@gmail.com", "social": { "facebook": “http://facebook.com/julio.sanchez“, "twitter": “http://twitter.com/jjsanch“, "linkedin": “http://es.linkedin.com/juliosanchez“ }, "description": "Soy una persona afable, estudioso y amigo de mis amigos.”, "hobbies": [ "python", "angularjs", "mongodb" ]}

Documento JSON

Una de CRUD

• Las operaciones del CRUD en MongoDB se realizan con los métodos:• Insert• Find• Update/Save• Delete

• Siempre se antepone el nombre de la colección:db.collection.operacion({documento})

• El contenido de la operación siempre será un documento JSON.

Una de CRUD

• Consulta Básicadb.ciudades.find({ciudad:’Madrid'});

• Consulta con Filtrodb.ciudades.find({

habitantes:{$lt:400000}});

• Ordenacionesdb.ciudades.find().sort({

ciudad:1});

Consultas• Consultas con conjuntosdb.ciudades.find({ciudad:

{$in:[‘Avila','Zamora','Madrid']}});

• Projectiondb.ciudades.find({

habitantes:{$gt:1000000}},{ciudad:1});

• Actualización Básicadb.ciudades.update(

{ciudad:'Avila'},{$set:{habitantes:58915}

});

• Actualización Múltipledb.ciudades.update({

habitantes:{$gt:600000}},{$set:{‘grande’:true}},{multi:true}

);

Actualizaciones• Upsert - Se puede hacer con

un Savedb.ciudades.update({

ciudad:'Zamora'},{$set:{habitantes:65362}},{upsert:true}

);

• Insercióndb.ciudades.insert(

{'ciudad':'Avila',‘habitantes':58915}

);

• Borradodb.ciudades.delete(

{ciudad:’Zamora’});

Inserción y Borrado

Modelos de Datos con Arrays

• Una de las características de MongoDB es poder crear campos que sean arrays de datos.• Los Arrays pueden contener valores o

una colección de subdocumentos.• Existen los operadores $push, $pull, $each que nos ayudan a manipular los arrays.

Modelos de Datos con Arrays

{ …

“hobbies": [

"python",

"angularjs",

"mongodb" ] …}

• $push - Insertar un elemento en el arraydb.users.update({username:"rigodon"},{$push:{hobbies:"Javascript"}})• $each - Insertar N elementos en el arraydb.users.update({username:"rigodon"}, {$push:{hobbies:{$each:["Java","Python","AngularJS"]}}}) • $pull - Eliminar un elemento del arraydb.users.update({username:"rigodon"}, {$pull:{hobbies:"Java"}})

$push, $each y $pull

MongoDB Shell

• Se pueden ejecutar operaciones sobre MongoDB mediante un Shell Javascript.• El Shell Javascript permite todas las operaciones disponibles

en MongoDB así como el manejo básico de las operaciones Javascript.• Para ejecutar un shell de MongoDB escribimos

mongo fichero.js

MongoDB Shell

conn = new Mongo();db = conn.getDB("demografia");

documento = db.ciudades.findOne();

printjson(documento);

Shell y FindOne

conn = new Mongo();db = conn.getDB("demografia");

var documento = new Object();documento.ciudad = "Salamanca";documento.habitantes = 154462;x = db.ciudades.insert(documento);

print ('El número de documentos insertado es de '+ x['nInserted']);

Insertar un documento con Shell

conn = new Mongo();db = conn.getDB("demografia");

function cursor (doc) {print("En " + doc.ciudad + " hay " + doc.habitantes + " habitantes.");

}

db.ciudades.find().forEach(cursor);

db.ciudades.find().forEach( function(doc) {print("En " + doc.ciudad + " hay " + doc.habitantes + " habitantes.");

} );

Cursores en el Shell

Python + MongoDB = Pymongo

• Pymongo es el driver que se utiliza desde Python para poder acceder a una base de datos MongoDB. Actualmente tenemos pymongo 3.2.

• La documentación de pymongo está en https://api.mongodb.org/python/current/

• Instalar pymongopip install pymongo

• Clase principal de pymongo es MongoClient

Python + MongoDB = Pymongo

from pymongo import MongoClient

client = MongoClient()db = client.codemotionusers = db.users

usuario = { 'gender':'M', 'hobbies': 'tv'}

miusuario = users.find_one(usuario)print miusuario['name']

contador = users.find(usuario).count()print contador

cursor = users.find(usuario)for miusuario in cursor: print miusuario['name']

Consultas en Pymongo

from flask import Flask, jsonifyfrom pymongo import MongoClient

app = Flask(__name__)

client = MongoClient('mongodb://localhost:27017/')db = client.codemotionusers = db.users

@app.route('/user/<id>')def usuario(id):

filtro = { 'username':id } projection = { '_id':0 }

consulta = users.find_one(filtro,projection)

print consulta

return jsonify({'resultado':consulta})

if __name__ == '__main__': app.run()

Servicio REST con Flask + MongoDB

Y ahora, ¿qué?

Curso de MongoDB y Paradigma de Bases de Datos NOSQL

http://abirtone.com/formacion/mongodb-esencial/

Busca, lo encontrarás !

http://twitter.com/victor_cuervo

https://github.com/victorcuervo/lineadecodigo_mongodb

http://www.slideshare.net/victorcuervo/

http://lineadecodigo.com

¿Preguntas?