http://abirtone.com/formacion/mongodb-esencial/
@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": "[email protected]", "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?
Top Related