SlideShare una empresa de Scribd logo
1 de 29
1
http://abirtone.com/formacion/mongodb-esencial/
vcuervo@gmail.com
@victor_cuervo
Un pequeño sorbo.
MongoDB
2
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 CRUD
Modelos de Datos con Arrays
MongoDB Shell. Un poco de Javascript
Python + MongoDB = Pymongo
Y ahora ¿qué?
3
Índice
4
¿Qué es MongoDB?
• Columna
• Hadoop/HBase, Cassandra
• Documento
• MongoDB, CouchDB
• Clave/Valor
• DynamoDB, Redis
• Grafos
• Neo4j, Infinite Graph
http://nosql-database.org
5
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
6
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"
]
}
7
Documento JSON
8
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.
9
Una de CRUD
10
• Consulta Básica
db.ciudades.find({ciudad:’Madrid'});
• Consulta con Filtro
db.ciudades.find({
habitantes:{$lt:400000}
});
• Ordenaciones
db.ciudades.find().sort({
ciudad:1
});
Consultas
• Consultas con conjuntos
db.ciudades.find({ciudad:
{$in:[‘Avila','Zamora','Madrid']}});
• Projection
db.ciudades.find({
habitantes:{$gt:1000000}},
{ciudad:1});
11
• Actualización Básica
db.ciudades.update(
{ciudad:'Avila'},
{$set:{habitantes:58915}
});
• Actualización Múltiple
db.ciudades.update({
habitantes:{$gt:600000}},
{$set:{‘grande’:true}},
{multi:true}
);
Actualizaciones
• Upsert - Se puede hacer con un
Save
db.ciudades.update({
ciudad:'Zamora'},
{$set:{habitantes:65362}},
{upsert:true}
);
• Inserción
db.ciudades.insert(
{'ciudad':'Avila',
‘habitantes':58915}
);
• Borrado
db.ciudades.delete(
{ciudad:’Zamora’}
);
12
Inserción y Borrado
13
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.
14
Modelos de Datos con Arrays
{
…
“hobbies": [
"python",
"angularjs",
"mongodb"
]
…
}
• $push - Insertar un elemento en el array
db.users.update({username:"rigodon"},{$push:{hobbies:"Javascript"}})
• $each - Insertar N elementos en el array
db.users.update({username:"rigodon"},
{$push:{hobbies:{$each:["Java","Python","AngularJS"]}}})
• $pull - Eliminar un elemento del array
db.users.update({username:"rigodon"},
{$pull:{hobbies:"Java"}})
15
$push, $each y $pull
16
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
17
MongoDB Shell
conn = new Mongo();
db = conn.getDB("demografia");
documento = db.ciudades.findOne();
printjson(documento);
18
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']);
19
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.");
} );
20
Cursores en el Shell
21
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 pymongo
pip install pymongo
• Clase principal de pymongo es MongoClient
22
Python + MongoDB = Pymongo
from pymongo import MongoClient
client = MongoClient()
db = client.codemotion
users = 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']
23
Consultas en Pymongo
from flask import Flask, jsonify
from pymongo import MongoClient
app = Flask(__name__)
client = MongoClient('mongodb://localhost:27017/')
db = client.codemotion
users = 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__':
24
Servicio REST con Flask + MongoDB
25
Y ahora, ¿qué?
26
Curso de MongoDB y Paradigma de Bases de Datos NOSQL
http://abirtone.com/formacion/mongodb-esencial/
27
Busca, lo encontrarás !
http://twitter.com/victor_cuervo
https://github.com/victorcuervo/lineadecodigo_mongodb
http://www.slideshare.net/victorcuervo/
http://lineadecodigo.com
28
¿Preguntas?
29

Más contenido relacionado

La actualidad más candente

La actualidad más candente (6)

Symfony2 and ElasticSearch
Symfony2 and ElasticSearchSymfony2 and ElasticSearch
Symfony2 and ElasticSearch
 
¿que es mongodb?
¿que es mongodb?¿que es mongodb?
¿que es mongodb?
 
MongoDb (BcnDevCon Nov 2011)
MongoDb (BcnDevCon Nov 2011)MongoDb (BcnDevCon Nov 2011)
MongoDb (BcnDevCon Nov 2011)
 
Instalacion nosql "mongodb"
Instalacion nosql "mongodb"Instalacion nosql "mongodb"
Instalacion nosql "mongodb"
 
Maual de instalacion mongodb
Maual de instalacion mongodbMaual de instalacion mongodb
Maual de instalacion mongodb
 
Bd no sql
Bd no sqlBd no sql
Bd no sql
 

Similar a Tarde Técnica Abirtone. MongoDB. Un pequeño sorbo.

Similar a Tarde Técnica Abirtone. MongoDB. Un pequeño sorbo. (20)

NOSQL: Primeros Pasos en MongoDB
NOSQL: Primeros Pasos en MongoDBNOSQL: Primeros Pasos en MongoDB
NOSQL: Primeros Pasos en MongoDB
 
CouchDB y el desarrollo de aplicaciones Android
CouchDB y el desarrollo de aplicaciones AndroidCouchDB y el desarrollo de aplicaciones Android
CouchDB y el desarrollo de aplicaciones Android
 
1 tutorial de mongo db
1 tutorial de mongo db1 tutorial de mongo db
1 tutorial de mongo db
 
Mallorca MUG: Introducción a MongoDB
Mallorca MUG: Introducción a MongoDBMallorca MUG: Introducción a MongoDB
Mallorca MUG: Introducción a MongoDB
 
MONGODB - NOSQL
MONGODB - NOSQLMONGODB - NOSQL
MONGODB - NOSQL
 
Análisis de Datos con MongoDB
Análisis de Datos con MongoDBAnálisis de Datos con MongoDB
Análisis de Datos con MongoDB
 
Greach 2011 - Engrandeciendo Grails con Mongo DB
Greach 2011 - Engrandeciendo Grails con Mongo DBGreach 2011 - Engrandeciendo Grails con Mongo DB
Greach 2011 - Engrandeciendo Grails con Mongo DB
 
Mongo db
Mongo dbMongo db
Mongo db
 
Sgbd mongodb
Sgbd   mongodbSgbd   mongodb
Sgbd mongodb
 
FULLSTACK JS DEV in 2017
FULLSTACK JS DEV in 2017FULLSTACK JS DEV in 2017
FULLSTACK JS DEV in 2017
 
MongoDB
MongoDBMongoDB
MongoDB
 
Que es MongoDB
Que es MongoDBQue es MongoDB
Que es MongoDB
 
Semana 3 MONGODB conceptos básicos NOSQL
Semana 3   MONGODB conceptos básicos NOSQLSemana 3   MONGODB conceptos básicos NOSQL
Semana 3 MONGODB conceptos básicos NOSQL
 
Mongo bd michael landeo vargas
Mongo bd michael landeo vargasMongo bd michael landeo vargas
Mongo bd michael landeo vargas
 
¿ como funciona MongoDB ? - mongo4dba.com
¿ como funciona MongoDB ? - mongo4dba.com¿ como funciona MongoDB ? - mongo4dba.com
¿ como funciona MongoDB ? - mongo4dba.com
 
MongoDB
MongoDBMongoDB
MongoDB
 
NodeJS y MongoDB
NodeJS y MongoDBNodeJS y MongoDB
NodeJS y MongoDB
 
Instalacion mongo db_2.4.9
Instalacion mongo db_2.4.9Instalacion mongo db_2.4.9
Instalacion mongo db_2.4.9
 
Mongo db
Mongo dbMongo db
Mongo db
 
Temario bigdata
Temario bigdataTemario bigdata
Temario bigdata
 

Tarde Técnica Abirtone. MongoDB. Un pequeño sorbo.

  • 2. 2 Busca, lo encontrarás ! http://twitter.com/victor_cuervo https://github.com/victorcuervo/lineadecodigo_mongodb http://www.slideshare.net/victorcuervo/ http://lineadecodigo.com
  • 3. ¿Qué es MongoDB? Una de CRUD Modelos de Datos con Arrays MongoDB Shell. Un poco de Javascript Python + MongoDB = Pymongo Y ahora ¿qué? 3 Índice
  • 5. • Columna • Hadoop/HBase, Cassandra • Documento • MongoDB, CouchDB • Clave/Valor • DynamoDB, Redis • Grafos • Neo4j, Infinite Graph http://nosql-database.org 5 Bases de Datos NOSQL
  • 6. • 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 6 MongoDB
  • 7. { "_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" ] } 7 Documento JSON
  • 9. • 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. 9 Una de CRUD
  • 10. 10 • Consulta Básica db.ciudades.find({ciudad:’Madrid'}); • Consulta con Filtro db.ciudades.find({ habitantes:{$lt:400000} }); • Ordenaciones db.ciudades.find().sort({ ciudad:1 }); Consultas • Consultas con conjuntos db.ciudades.find({ciudad: {$in:[‘Avila','Zamora','Madrid']}}); • Projection db.ciudades.find({ habitantes:{$gt:1000000}}, {ciudad:1});
  • 11. 11 • Actualización Básica db.ciudades.update( {ciudad:'Avila'}, {$set:{habitantes:58915} }); • Actualización Múltiple db.ciudades.update({ habitantes:{$gt:600000}}, {$set:{‘grande’:true}}, {multi:true} ); Actualizaciones • Upsert - Se puede hacer con un Save db.ciudades.update({ ciudad:'Zamora'}, {$set:{habitantes:65362}}, {upsert:true} );
  • 14. • 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. 14 Modelos de Datos con Arrays { … “hobbies": [ "python", "angularjs", "mongodb" ] … }
  • 15. • $push - Insertar un elemento en el array db.users.update({username:"rigodon"},{$push:{hobbies:"Javascript"}}) • $each - Insertar N elementos en el array db.users.update({username:"rigodon"}, {$push:{hobbies:{$each:["Java","Python","AngularJS"]}}}) • $pull - Eliminar un elemento del array db.users.update({username:"rigodon"}, {$pull:{hobbies:"Java"}}) 15 $push, $each y $pull
  • 17. • 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 17 MongoDB Shell
  • 18. conn = new Mongo(); db = conn.getDB("demografia"); documento = db.ciudades.findOne(); printjson(documento); 18 Shell y FindOne
  • 19. 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']); 19 Insertar un documento con Shell
  • 20. 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."); } ); 20 Cursores en el Shell
  • 21. 21 Python + MongoDB = Pymongo
  • 22. • 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 pymongo pip install pymongo • Clase principal de pymongo es MongoClient 22 Python + MongoDB = Pymongo
  • 23. from pymongo import MongoClient client = MongoClient() db = client.codemotion users = 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'] 23 Consultas en Pymongo
  • 24. from flask import Flask, jsonify from pymongo import MongoClient app = Flask(__name__) client = MongoClient('mongodb://localhost:27017/') db = client.codemotion users = 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__': 24 Servicio REST con Flask + MongoDB
  • 26. 26 Curso de MongoDB y Paradigma de Bases de Datos NOSQL http://abirtone.com/formacion/mongodb-esencial/
  • 27. 27 Busca, lo encontrarás ! http://twitter.com/victor_cuervo https://github.com/victorcuervo/lineadecodigo_mongodb http://www.slideshare.net/victorcuervo/ http://lineadecodigo.com
  • 29. 29