Introduccion mongodb
-
Upload
jonathan-corona -
Category
Documents
-
view
704 -
download
1
description
Transcript of Introduccion mongodb
Introducción
Jonathan Corona@soequelle
• Orientado a documentos◦ Los documentos (objetos) se corresponden directamente con los distintos tipos de datos de
los lenguajes de programación◦ Los documentos embebidos y los arrays minimizan la necesidad de usar joins◦ Ausencia de joins y de transacciones (de varios objetos) para lograr un alto rendimiento y
una escalabilidad fácil• Alto rendimiento
◦ Sin joins ni transacciones las lecturas y las escrituras son más rápidas◦ Índices en documentos embebidos y arrays
• Alta disponibilidad◦ Servidores replicados con mecanismos automáticos de sustitución de un servidor maestro en
caso de fallo• Fácil escalabilidad
◦ Lecturas consistentes eventualmente y distribuidas sobre los servidores replicados◦ Sharding automátizado (auto-partición de los datos a lo largo de varios servidores)
■ Las lecturas y las escrituras se distribuyen sobre los distintos shards■ La ausencia de joins y de transacciones hace que las consultas distribuidas sean
más fáciles y sencillas• Lenguaje de consulta muy completo y rico
http://try.mongodb.org/
http://www.mongodb.org/display/DOCSES/Descarga
Iniciando el daemon de la base de datos
bin/mongod --dbpath data
Iniciando el daemon de la base de datos
bin/mongo
Iniciando el daemon de la base de datos
Iniciando el daemon de la base de datos
Listando bases de datos
> show dbsadminbasketlocal
Crear y Accesar una base de datos
> use blogswitched to db blog
Listar colecciones
> show collections>
Crear una coleccion
> db.createCollection('posts'){ "ok" : 1 }>
Listar colecciones
> show collectionspostssystem.indexes
Agregando documentos
> use blogswitched to db blog
Agregando documentos
> db.posts.insert({'author_id':'1','uri':'/posts/','title':'El leon hambriento','summary':'Un leon con mucha hambre','body':'Cronica de sobre un cuento infantil...'})
> db.posts.insert({'author_id':'1','uri':'/posts/','title':'El leon hambriento','summary':'Un leon con mucha hambre','body':'Cronica de sobre un cuento infantil...','comments':{'name':'Juan','email':'[email protected]','content':'Buen post'}})})
Consultando documentos
> db.posts.find() { "_id" : ObjectId("4d2cca114f8e825e1172d59d"), "author_id" : "1", "uri" : "/posts/", "title" : "El leon hambriento", "summary" : "Un leon con mucha hambre", "body" : "Cronica de sobre un cuento infantil...", "comments" : { "name" : "Juan", "email" : "[email protected]", "content" : "Buen post" } }{ "_id" : ObjectId("4d2cca604f8e825e1172d59e"), "author_id" : "2", "uri" : "/posts/2", "title" : "El leon hambriento2", "summary" : "Un leon con mucha hambre2", "body" : "Cronica de sobre un cuento infantil...2", "comments" : { "name" : "Juan2", "email" : "[email protected]", "content" : "Buen post2" } }{ "_id" : ObjectId("4d2cca844f8e825e1172d59f"), "author_id" : "3", "uri" : "/posts/3", "title" : "El leon hambriento3", "summary" : "Un leon con mucha hambre3", "body" : "Cronica de sobre un cuento infantil...3", "comments" : { "name" : "Juan3", "email" : "[email protected]", "content" : "Buen post3" } }{ "_id" : ObjectId("4d2ccaa94f8e825e1172d5a0"), "author_id" : "4", "uri" : "/posts/4", "title" : "El leon hambriento4", "summary" : "Un leon con mucha hambre4", "body" : "Cronica de sobre un cuento infantil...4", "comments" : { "name" : "Juan4", "email" : "[email protected]", "content" : "Buen post4" } }{ "_id" : ObjectId("4d2ccade4f8e825e1172d5a1"), "author_id" : "5", "uri" : "/posts/5", "title" : "El leon hambriento5", "summary" : "Un leon con mucha hambre5", "body" : "Cronica de sobre un cuento infantil...5", "comments" : { "name" : "Juan5", "email" : "[email protected]", "content" : "Buen post5" } }>
Consultando documentos
> db.posts.findOne(){! "_id" : ObjectId("4d2cca114f8e825e1172d59d"),! "author_id" : "1",! "uri" : "/posts/",! "title" : "El leon hambriento",! "summary" : "Un leon con mucha hambre",! "body" : "Cronica de sobre un cuento infantil...",! "comments" : {! ! "name" : "Juan",! ! "email" : "[email protected]",! ! "content" : "Buen post"! }}>
Consultando documentos
> db.posts.find({'author_id':'1'}){ "_id" : ObjectId("4d2cca114f8e825e1172d59d"), "author_id" : "1", "uri" : "/posts/", "title" : "El leon hambriento", "summary" : "Un leon con mucha hambre", "body" : "Cronica de sobre un cuento infantil...", "comments" : { "name" : "Juan", "email" : "[email protected]", "content" : "Buen post" } }>
> db.posts.find({'comments.name':'Juan'}){ "_id" : ObjectId("4d2cca114f8e825e1172d59d"), "author_id" : "1", "uri" : "/posts/", "title" : "El leon hambriento", "summary" : "Un leon con mucha hambre", "body" : "Cronica de sobre un cuento infantil...", "comments" : { "name" : "Juan", "email" : "[email protected]", "content" : "Buen post" } }>
Número de documentos
> db.posts.find().count()5>
Limitando consulta de documentos
> db.posts.find().limit(2){ "_id" : ObjectId("4d2cca114f8e825e1172d59d"), "author_id" : "1", "uri" : "/posts/", "title" : "El leon hambriento", "summary" : "Un leon con mucha hambre", "body" : "Cronica de sobre un cuento infantil...", "comments" : { "name" : "Juan", "email" : "[email protected]", "content" : "Buen post" } }{ "_id" : ObjectId("4d2cca604f8e825e1172d59e"), "author_id" : "2", "uri" : "/posts/2", "title" : "El leon hambriento2", "summary" : "Un leon con mucha hambre2", "body" : "Cronica de sobre un cuento infantil...2", "comments" : { "name" : "Juan2", "email" : "[email protected]", "content" : "Buen post2" } }>
Omitiendo documentos
> db.posts.find().skip(2){ "_id" : ObjectId("4d2cca844f8e825e1172d59f"), "author_id" : "3", "uri" : "/posts/3", "title" : "El leon hambriento3", "summary" : "Un leon con mucha hambre3", "body" : "Cronica de sobre un cuento infantil...3", "comments" : { "name" : "Juan3", "email" : "[email protected]", "content" : "Buen post3" } }{ "_id" : ObjectId("4d2ccaa94f8e825e1172d5a0"), "author_id" : "4", "uri" : "/posts/4", "title" : "El leon hambriento4", "summary" : "Un leon con mucha hambre4", "body" : "Cronica de sobre un cuento infantil...4", "comments" : { "name" : "Juan4", "email" : "[email protected]", "content" : "Buen post4" } }{ "_id" : ObjectId("4d2ccade4f8e825e1172d5a1"), "author_id" : "5", "uri" : "/posts/5", "title" : "El leon hambriento5", "summary" : "Un leon con mucha hambre5", "body" : "Cronica de sobre un cuento infantil...5", "comments" : { "name" : "Juan5", "email" : "[email protected]", "content" : "Buen post5" } }>
Ordenando Documentos
> db.posts.find().sort({author_id:-1}){ "_id" : ObjectId("4d2ccade4f8e825e1172d5a1"), "author_id" : "5", "uri" : "/posts/5", "title" : "El leon hambriento5", "summary" : "Un leon con mucha hambre5", "body" : "Cronica de sobre un cuento infantil...5", "comments" : { "name" : "Juan5", "email" : "[email protected]", "content" : "Buen post5" } }{ "_id" : ObjectId("4d2ccaa94f8e825e1172d5a0"), "author_id" : "4", "uri" : "/posts/4", "title" : "El leon hambriento4", "summary" : "Un leon con mucha hambre4", "body" : "Cronica de sobre un cuento infantil...4", "comments" : { "name" : "Juan4", "email" : "[email protected]", "content" : "Buen post4" } }{ "_id" : ObjectId("4d2cca844f8e825e1172d59f"), "author_id" : "3", "uri" : "/posts/3", "title" : "El leon hambriento3", "summary" : "Un leon con mucha hambre3", "body" : "Cronica de sobre un cuento infantil...3", "comments" : { "name" : "Juan3", "email" : "[email protected]", "content" : "Buen post3" } }{ "_id" : ObjectId("4d2cca604f8e825e1172d59e"), "author_id" : "2", "uri" : "/posts/2", "title" : "El leon hambriento2", "summary" : "Un leon con mucha hambre2", "body" : "Cronica de sobre un cuento infantil...2", "comments" : { "name" : "Juan2", "email" : "[email protected]", "content" : "Buen post2" } }{ "_id" : ObjectId("4d2cca114f8e825e1172d59d"), "author_id" : "1", "uri" : "/posts/", "title" : "El leon hambriento", "summary" : "Un leon con mucha hambre", "body" : "Cronica de sobre un cuento infantil...", "comments" : { "name" : "Juan", "email" : "[email protected]", "content" : "Buen post" } }>
Consultando documentos
> db.posts.find().skip(2).limit(2).sort({author_id:-1}){ "_id" : ObjectId("4d2cca844f8e825e1172d59f"), "author_id" : "3", "uri" : "/posts/3", "title" : "El leon hambriento3", "summary" : "Un leon con mucha hambre3", "body" : "Cronica de sobre un cuento infantil...3", "comments" : { "name" : "Juan3", "email" : "[email protected]", "content" : "Buen post3" } }{ "_id" : ObjectId("4d2cca604f8e825e1172d59e"), "author_id" : "2", "uri" : "/posts/2", "title" : "El leon hambriento2", "summary" : "Un leon con mucha hambre2", "body" : "Cronica de sobre un cuento infantil...2", "comments" : { "name" : "Juan2", "email" : "[email protected]", "content" : "Buen post2" } }>
Operadores
• $gt: Valores mayores que el que le pasamos.• $lt: Valores menores que el que le pasamos.• $gte: Valores mayores o iguales que el que le pasamos.• $lte: Valores menores o iguales que el que le pasamos.• $ne: Distinto• $in: Si el valor esta entre los que le pasamos como array.
Actualización de documentos
> var dato=db.posts.findOne({'author_id':'3'})> dato{! "_id" : ObjectId("4d2cca844f8e825e1172d59f"),! "author_id" : "3",! "uri" : "/posts/3",! "title" : "El leon hambriento3",! "summary" : "Un leon con mucha hambre3",! "body" : "Cronica de sobre un cuento infantil...3",! "comments" : {! ! "name" : "Juan3",! ! "email" : "[email protected]",! ! "content" : "Buen post3"! }}> dato['create']=new Date(2011,01,11)> db.posts.save(dato)> db.posts.findOne({'author_id':'3'}){! "_id" : ObjectId("4d2cca844f8e825e1172d59f"),! "author_id" : "3",! "uri" : "/posts/3",! "title" : "El leon hambriento3",! "summary" : "Un leon con mucha hambre3",! "body" : "Cronica de sobre un cuento infantil...3",! "comments" : {! ! "name" : "Juan3",! ! "email" : "[email protected]",! ! "content" : "Buen post3"! },! "create" : "Fri Feb 11 2011 00:00:00 GMT-0600 (CST)"}
Actualización de documentos
> db.posts.update({'author_id':'3'},{'$set':{'uri':'/post/30'}})
Eliminando documentos
> db.posts.remove({'author_id':'2'})> db.posts.find(){ "_id" : ObjectId("4d2cca114f8e825e1172d59d"), "uri" : "vacio", "title" : "vacio" }{ "_id" : ObjectId("4d2ccaa94f8e825e1172d5a0"), "uri" : "vacio", "title" : "vacio" }{ "_id" : ObjectId("4d2ccade4f8e825e1172d5a1"), "author_id" : "5", "uri" : "/posts/5", "title" : "El leon hambriento5", "summary" : "Un leon con mucha hambre5", "body" : "Cronica de sobre un cuento infantil...5", "comments" : { "name" : "Juan5", "email" : "[email protected]", "content" : "Buen post5" } }{ "_id" : ObjectId("4d2cca844f8e825e1172d59f"), "uri" : "vacio", "title" : "vacio" }>
http://rickosborne.org/download/SQL-to-MongoDB.pdf
Jonathan Corona@soequelle
Muchas gracias