Slide 1

Slide 1 text

MongoDB Taller b´ asico Miguel Angel Gordian Aztli June 24, 2013

Slide 2

Slide 2 text

Resumen MongoDB ¿Qu´ e es MongoDB? CRUD Indexes Aggregation Permisos Resumen MongoDB CRUD Indexes Aggregation Permisos Miguel Angel Gordian — MongoDB Aztli 2/34

Slide 3

Slide 3 text

Resumen MongoDB ¿Qu´ e es MongoDB? CRUD Indexes Aggregation Permisos Resumen MongoDB CRUD Indexes Aggregation Permisos Miguel Angel Gordian — MongoDB Aztli 3/34

Slide 4

Slide 4 text

Resumen MongoDB ¿Qu´ e es MongoDB? CRUD Indexes Aggregation Permisos MongoDB La base de datos NoSQL Miguel Angel Gordian — MongoDB Aztli 4/34

Slide 5

Slide 5 text

Resumen MongoDB ¿Qu´ e es MongoDB? CRUD Indexes Aggregation Permisos Caracter´ ısticas • Base de datos • Orientada a documentos • Alto rendimiento • Open source • Horizontally scalable Miguel Angel Gordian — MongoDB Aztli 5/34

Slide 6

Slide 6 text

Resumen MongoDB ¿Qu´ e es MongoDB? CRUD Indexes Aggregation Permisos Caracter´ ısticas • Base de datos • Orientada a documentos • Alto rendimiento • Open source • Horizontally scalable Miguel Angel Gordian — MongoDB Aztli 5/34

Slide 7

Slide 7 text

Resumen MongoDB ¿Qu´ e es MongoDB? CRUD Indexes Aggregation Permisos Caracter´ ısticas • Base de datos • Orientada a documentos • Alto rendimiento • Open source • Horizontally scalable Miguel Angel Gordian — MongoDB Aztli 5/34

Slide 8

Slide 8 text

Resumen MongoDB ¿Qu´ e es MongoDB? CRUD Indexes Aggregation Permisos Caracter´ ısticas • Base de datos • Orientada a documentos • Alto rendimiento • Open source • Horizontally scalable Miguel Angel Gordian — MongoDB Aztli 5/34

Slide 9

Slide 9 text

Resumen MongoDB ¿Qu´ e es MongoDB? CRUD Indexes Aggregation Permisos Caracter´ ısticas • Base de datos • Orientada a documentos • Alto rendimiento • Open source • Horizontally scalable Miguel Angel Gordian — MongoDB Aztli 5/34

Slide 10

Slide 10 text

Resumen MongoDB ¿Qu´ e es MongoDB? CRUD Indexes Aggregation Permisos Documentos Documentos Esencialmente un documento es un array asociativo, los cuales son estructuras de datos que mantienen la informaci´ on en la base de datos. { name: "mongo", type: "DB" } Miguel Angel Gordian — MongoDB Aztli 6/34

Slide 11

Slide 11 text

Resumen MongoDB ¿Qu´ e es MongoDB? CRUD Indexes Aggregation Permisos Open source • Opensource • Github • Licencia AGPL • Iniciado y patrocinado por 10gen • Licencia comerciales • Las contribuciones son bienvenidas Miguel Angel Gordian — MongoDB Aztli 7/34

Slide 12

Slide 12 text

Resumen MongoDB ¿Qu´ e es MongoDB? CRUD Indexes Aggregation Permisos Rendimiento • Escrito en C++ • Uso extensivo de mapeo de memoria de archivos • Soporte completo para ´ ındices primarios y secundarios • Uso de bson para el manejo de los datos • Modelos de documentos (menos trabajo) Miguel Angel Gordian — MongoDB Aztli 8/34

Slide 13

Slide 13 text

Resumen MongoDB ¿Qu´ e es MongoDB? CRUD Indexes Aggregation Permisos Horizontally Scalable Miguel Angel Gordian — MongoDB Aztli 9/34

Slide 14

Slide 14 text

Resumen MongoDB ¿Qu´ e es MongoDB? CRUD Indexes Aggregation Permisos Soporte completo • Consultas Ad hoc • Versatilidad y potencia en consultas • Soporte para operaciones geo-espaciales • Soporte para gran variedad de lenguajes programaci´ on. • Schema flexible Miguel Angel Gordian — MongoDB Aztli 10/34

Slide 15

Slide 15 text

Resumen MongoDB ¿Qu´ e es MongoDB? CRUD Indexes Aggregation Permisos Mongo Shell1 1Es solo javascript y un REPL Miguel Angel Gordian — MongoDB Aztli 11/34

Slide 16

Slide 16 text

Resumen MongoDB ¿Qu´ e es MongoDB? CRUD Indexes Aggregation Permisos mongod mongod Es el demonio que maneja las peticiones de datas, el formato de los datos y el rendimiento de las operaciones en background. Opciones por defecto: • /data/db - Directorio de datos • 27017 - Puerto de comunicaci´ on (usa tcp) Miguel Angel Gordian — MongoDB Aztli 12/34

Slide 17

Slide 17 text

Resumen MongoDB ¿Qu´ e es MongoDB? CRUD Indexes Aggregation Permisos Encedido/Apagado mongod Encendido $ mongod --journal --dbpath=~mymongo/db \ --logpath=~mymongo/logs/log.1 Apagado $ mongod --shutdown $ kill -2 # SIGINT $ kill -15 # SIGTERM Miguel Angel Gordian — MongoDB Aztli 13/34

Slide 18

Slide 18 text

Resumen MongoDB ¿Qu´ e es MongoDB? CRUD Indexes Aggregation Permisos Resumen MongoDB CRUD Indexes Aggregation Permisos Miguel Angel Gordian — MongoDB Aztli 14/34

Slide 19

Slide 19 text

Resumen MongoDB ¿Qu´ e es MongoDB? CRUD Indexes Aggregation Permisos ¿Qu´ e es el CRUD? • Creat - Insert • Read - Find • Update - Update • Delete - Remove Miguel Angel Gordian — MongoDB Aztli 15/34

Slide 20

Slide 20 text

Resumen MongoDB ¿Qu´ e es MongoDB? CRUD Indexes Aggregation Permisos ¿Qu´ e es el CRUD? • Creat - Insert • Read - Find • Update - Update • Delete - Remove Miguel Angel Gordian — MongoDB Aztli 15/34

Slide 21

Slide 21 text

Resumen MongoDB ¿Qu´ e es MongoDB? CRUD Indexes Aggregation Permisos ¿Qu´ e es el CRUD? • Creat - Insert • Read - Find • Update - Update • Delete - Remove Miguel Angel Gordian — MongoDB Aztli 15/34

Slide 22

Slide 22 text

Resumen MongoDB ¿Qu´ e es MongoDB? CRUD Indexes Aggregation Permisos ¿Qu´ e es el CRUD? • Creat - Insert • Read - Find • Update - Update • Delete - Remove Miguel Angel Gordian — MongoDB Aztli 15/34

Slide 23

Slide 23 text

Resumen MongoDB ¿Qu´ e es MongoDB? CRUD Indexes Aggregation Permisos Insert Inserta un nuevo documento en la base de datos. db..insert({clave: valor}) Miguel Angel Gordian — MongoDB Aztli 16/34

Slide 24

Slide 24 text

Resumen MongoDB ¿Qu´ e es MongoDB? CRUD Indexes Aggregation Permisos Find B´ usqueda de elementos. db..findOne({clave: valor}) db..find({clave: valor}) Miguel Angel Gordian — MongoDB Aztli 17/34

Slide 25

Slide 25 text

Resumen MongoDB ¿Qu´ e es MongoDB? CRUD Indexes Aggregation Permisos Update Actualizar uno o mas campos del documento db..update({clave: valor}, {$set: {nuevaclave: nuevovalor}}) Sustituir el documento db..find({clave: valor}) Eliminar un campo del documento db..update({clave: valor}, {$unset: {eleminarclave: 1}}) Miguel Angel Gordian — MongoDB Aztli 18/34

Slide 26

Slide 26 text

Resumen MongoDB ¿Qu´ e es MongoDB? CRUD Indexes Aggregation Permisos Remove Eliminar documentos que concuerden con el documento pasado como par´ ametro. db..remove({clave: valor}) Miguel Angel Gordian — MongoDB Aztli 19/34

Slide 27

Slide 27 text

Resumen MongoDB ¿Qu´ e es MongoDB? CRUD Indexes Aggregation Permisos Contar elemetos Cuenta el numero de elementos devueltos a trav´ es de una consulta. db..find().count() Miguel Angel Gordian — MongoDB Aztli 20/34

Slide 28

Slide 28 text

Resumen MongoDB ¿Qu´ e es MongoDB? CRUD Indexes Aggregation Permisos Ordenacion Ordenamiento de la consulta ascendentemente a trav´ es del campo cualquiera. db..find().sort({cualquiera: 1}) Ordenamiento de la consulta descendentemente a trav´ es del campo cualquiera. db..find().sort({cualquiera: -1}) Miguel Angel Gordian — MongoDB Aztli 21/34

Slide 29

Slide 29 text

Resumen MongoDB ¿Qu´ e es MongoDB? CRUD Indexes Aggregation Permisos Limitar Evita los primeros N elementos. db..find().skip(N) Limita la consulta a solo N elementos. db..find().limit(N) Miguel Angel Gordian — MongoDB Aztli 22/34

Slide 30

Slide 30 text

Resumen MongoDB ¿Qu´ e es MongoDB? CRUD Indexes Aggregation Permisos Resumen MongoDB CRUD Indexes Aggregation Permisos Miguel Angel Gordian — MongoDB Aztli 23/34

Slide 31

Slide 31 text

Resumen MongoDB ¿Qu´ e es MongoDB? CRUD Indexes Aggregation Permisos Crear Indice Crear un ´ ındice es una operaci´ on bloqueante que puede llegar a tomar mucho tiempo completarla, para ello se puede agregar la opci´ on background: true, en las opciones. Crear un ´ ındice ascendente db..ensureIndex({key: 1}) Crear un ´ ındice descendente db..ensureIndex({key: -1}) Crear un index geo-espacial db..ensureIndex({locacion: "2d"}) Miguel Angel Gordian — MongoDB Aztli 24/34

Slide 32

Slide 32 text

Resumen MongoDB ¿Qu´ e es MongoDB? CRUD Indexes Aggregation Permisos Resumen MongoDB CRUD Indexes Aggregation Permisos Miguel Angel Gordian — MongoDB Aztli 25/34

Slide 33

Slide 33 text

Resumen MongoDB ¿Qu´ e es MongoDB? CRUD Indexes Aggregation Permisos Definici´ on Aggregation Framework Provee una manera de calcular datos agregados, sin tener que usar map-reduce. Miguel Angel Gordian — MongoDB Aztli 26/34

Slide 34

Slide 34 text

Resumen MongoDB ¿Qu´ e es MongoDB? CRUD Indexes Aggregation Permisos Operaciones $project $match $limit $skip $unwind $group $sort $geoNear Miguel Angel Gordian — MongoDB Aztli 27/34

Slide 35

Slide 35 text

Resumen MongoDB ¿Qu´ e es MongoDB? CRUD Indexes Aggregation Permisos Ejemplo de documento Documento { title : "this is my title" , author : "bob" , posted : new Date () , pageViews : 5 , tags : [ "fun" , "good", "fun" ] , comments : [ { author :"joe" , text : "this is cool" } , { author :"sam" , text : "this is bad" } ], other : { foo : 5 } } Aggregation db.articles.aggregate( { $project : { author : 1, tags : 1, } }, { $unwind : "$tags" }, { $group : { _id : { tags : "$tags" }, authors : { $addToSet : "$author" } } } ); Miguel Angel Gordian — MongoDB Aztli 28/34

Slide 36

Slide 36 text

Resumen MongoDB ¿Qu´ e es MongoDB? CRUD Indexes Aggregation Permisos Resumen MongoDB CRUD Indexes Aggregation Permisos Miguel Angel Gordian — MongoDB Aztli 29/34

Slide 37

Slide 37 text

Resumen MongoDB ¿Qu´ e es MongoDB? CRUD Indexes Aggregation Permisos Agregar usuario Usa db.addUser() para agregar documentos a la colecci´ on system.users collection en la base de datos, la cual crea y mantiene las credenciales en MongoDB. db.addUser( { user: "", userSource: "", roles: [] } ) Miguel Angel Gordian — MongoDB Aztli 30/34

Slide 38

Slide 38 text

Resumen MongoDB ¿Qu´ e es MongoDB? CRUD Indexes Aggregation Permisos roles read readWrite dbAdmin userAdmin clusterAdmin readAnyDatabase readWriteAnyDatabase userAdminAnyDatabase dbAdminAnyDatabase Miguel Angel Gordian — MongoDB Aztli 31/34

Slide 39

Slide 39 text

Resumen MongoDB ¿Qu´ e es MongoDB? CRUD Indexes Aggregation Permisos mongod bypass Si no existen usuarios en la base de datos, se puede obtener todos los privilegios al conectarse via localhost, para desabilitar bypass se inicia el demonio de la siguiente manera. mongod --setParameter enableLocalhostAuthBypass=0 Miguel Angel Gordian — MongoDB Aztli 32/34

Slide 40

Slide 40 text

Resumen MongoDB ¿Qu´ e es MongoDB? CRUD Indexes Aggregation Permisos Recursos ¿D´ onde continuar? Mongo http://docs.mongodb.org/manual/ El peque˜ no libro de mongo - Karl Seguin (Espa˜ nol) http://goo.gl/Iz9yJ MongoDB: The Definitive Guide, 2nd Edition (Ingles) http://goo.gl/peZ7B Mongo - taller https://speakerdeck.com/zoek1/mongodb Miguel Angel Gordian — MongoDB Aztli 33/34

Slide 41

Slide 41 text

Resumen MongoDB ¿Qu´ e es MongoDB? CRUD Indexes Aggregation Permisos ¿Preguntas? Miguel Angel Gordian [email protected] @capitanzoek Miguel Angel Gordian — MongoDB Aztli 34/34