Presentación sobre conceptos básicos de MongoDB. Manejo de Arrays en documentos. Programación MongoDB desde la Shell. Y uso de Python+MongoDB = Pymongo.
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
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
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