Slide 1

Slide 1 text

MongoDB Javascript Mongoose @MongoDB + @javascript = @mongoosejs Jesse Javier Cogollo Alvarez Developer by passion twitter: @jessecogollo March 18, 2015

Slide 2

Slide 2 text

MongoDB Javascript Mongoose Contenido MongoDB Javascript Mongoose

Slide 3

Slide 3 text

MongoDB Javascript Mongoose Que es @MongoDB ’MongoDB (from ”humongous”) is an open-source document database, and the leading NoSQL database. Written in C++.’ https://www.mongodb.org/ ’MongoDB was not designed in a lab. We built MongoDB from our own experiences building large-scale,high availability, robust systems...’ Eliot Horowitz, CTO and Co-Founder

Slide 4

Slide 4 text

MongoDB Javascript Mongoose Que es @MongoDB ’MongoDB (from ”humongous”) is an open-source document database, and the leading NoSQL database. Written in C++.’ https://www.mongodb.org/ ’MongoDB was not designed in a lab. We built MongoDB from our own experiences building large-scale,high availability, robust systems...’ Eliot Horowitz, CTO and Co-Founder

Slide 5

Slide 5 text

MongoDB Javascript Mongoose NOSQL En inform´ atica, NoSQL (a veces llamado ’no s´ olo SQL’) es una amplia clase de sistemas de gesti´ on de bases de datos que difieren del modelo cl´ asico del sistema de gesti´ on de bases de datos relacionales (RDBMS) en aspectos importantes, el m´ as destacado que no usan SQL como el principal lenguaje de consultas. http://es.wikipedia.org/wiki/NoSQL/

Slide 6

Slide 6 text

MongoDB Javascript Mongoose NOSQL Las caracteristicas comunes de las bases de datos NoSQL son: • No utilizan el modelo relacional. • Corren bien en clusters. • Open-source. • sin esquemas. • El resultado mas importante del aumento de las bases de datos NoSQL es la Persistencia Pol´ ıglota. http: //martinfowler.com/articles/nosqlKeyPoints.html

Slide 7

Slide 7 text

MongoDB Javascript Mongoose NOSQL Las caracteristicas comunes de las bases de datos NoSQL son: • No utilizan el modelo relacional. • Corren bien en clusters. • Open-source. • sin esquemas. • El resultado mas importante del aumento de las bases de datos NoSQL es la Persistencia Pol´ ıglota. http: //martinfowler.com/articles/nosqlKeyPoints.html

Slide 8

Slide 8 text

MongoDB Javascript Mongoose NOSQL Las caracteristicas comunes de las bases de datos NoSQL son: • No utilizan el modelo relacional. • Corren bien en clusters. • Open-source. • sin esquemas. • El resultado mas importante del aumento de las bases de datos NoSQL es la Persistencia Pol´ ıglota. http: //martinfowler.com/articles/nosqlKeyPoints.html

Slide 9

Slide 9 text

MongoDB Javascript Mongoose NOSQL Las caracteristicas comunes de las bases de datos NoSQL son: • No utilizan el modelo relacional. • Corren bien en clusters. • Open-source. • sin esquemas. • El resultado mas importante del aumento de las bases de datos NoSQL es la Persistencia Pol´ ıglota. http: //martinfowler.com/articles/nosqlKeyPoints.html

Slide 10

Slide 10 text

MongoDB Javascript Mongoose NOSQL Las caracteristicas comunes de las bases de datos NoSQL son: • No utilizan el modelo relacional. • Corren bien en clusters. • Open-source. • sin esquemas. • El resultado mas importante del aumento de las bases de datos NoSQL es la Persistencia Pol´ ıglota. http: //martinfowler.com/articles/nosqlKeyPoints.html

Slide 11

Slide 11 text

MongoDB Javascript Mongoose Persistencia pol´ ıglota

Slide 12

Slide 12 text

MongoDB Javascript Mongoose Caracteristicas 1. Document-Oriented Storage 2. Full Index Support 3. Replication 4. Auto Sharding 5. Querying 6. Map Reduce 7. GridFS 8. Other more... • MMS. • Partner with MongoDB. • Multiples drivers.

Slide 13

Slide 13 text

MongoDB Javascript Mongoose Caracteristicas 1. Document-Oriented Storage 2. Full Index Support 3. Replication 4. Auto Sharding 5. Querying 6. Map Reduce 7. GridFS 8. Other more... • MMS. • Partner with MongoDB. • Multiples drivers.

Slide 14

Slide 14 text

MongoDB Javascript Mongoose Caracteristicas 1. Document-Oriented Storage 2. Full Index Support 3. Replication 4. Auto Sharding 5. Querying 6. Map Reduce 7. GridFS 8. Other more... • MMS. • Partner with MongoDB. • Multiples drivers.

Slide 15

Slide 15 text

MongoDB Javascript Mongoose Caracteristicas 1. Document-Oriented Storage 2. Full Index Support 3. Replication 4. Auto Sharding 5. Querying 6. Map Reduce 7. GridFS 8. Other more... • MMS. • Partner with MongoDB. • Multiples drivers.

Slide 16

Slide 16 text

MongoDB Javascript Mongoose Caracteristicas 1. Document-Oriented Storage 2. Full Index Support 3. Replication 4. Auto Sharding 5. Querying 6. Map Reduce 7. GridFS 8. Other more... • MMS. • Partner with MongoDB. • Multiples drivers.

Slide 17

Slide 17 text

MongoDB Javascript Mongoose Caracteristicas 1. Document-Oriented Storage 2. Full Index Support 3. Replication 4. Auto Sharding 5. Querying 6. Map Reduce 7. GridFS 8. Other more... • MMS. • Partner with MongoDB. • Multiples drivers.

Slide 18

Slide 18 text

MongoDB Javascript Mongoose Caracteristicas 1. Document-Oriented Storage 2. Full Index Support 3. Replication 4. Auto Sharding 5. Querying 6. Map Reduce 7. GridFS 8. Other more... • MMS. • Partner with MongoDB. • Multiples drivers.

Slide 19

Slide 19 text

MongoDB Javascript Mongoose Caracteristicas 1. Document-Oriented Storage 2. Full Index Support 3. Replication 4. Auto Sharding 5. Querying 6. Map Reduce 7. GridFS 8. Other more... • MMS. • Partner with MongoDB. • Multiples drivers.

Slide 20

Slide 20 text

MongoDB Javascript Mongoose Caracteristicas 1. Document-Oriented Storage 2. Full Index Support 3. Replication 4. Auto Sharding 5. Querying 6. Map Reduce 7. GridFS 8. Other more... • MMS. • Partner with MongoDB. • Multiples drivers.

Slide 21

Slide 21 text

MongoDB Javascript Mongoose Insert Find Update Remove (CRUD) IFUR db.meetups.insert({”name”:”mongoosejs”,”place”:”Ruta N”}) IFUR db.meetups.find({”name”:”mongoosejs”}) IFUR db.meetups.update({”name”:”mongoosejs”}, {$set:{”description”:”Ruta N, piso 0.”}}) IFUR db.meetups.remove({”name”:”mongoosejs”})

Slide 22

Slide 22 text

MongoDB Javascript Mongoose Insert Find Update Remove (CRUD) IFUR db.meetups.insert({”name”:”mongoosejs”,”place”:”Ruta N”}) IFUR db.meetups.find({”name”:”mongoosejs”}) IFUR db.meetups.update({”name”:”mongoosejs”}, {$set:{”description”:”Ruta N, piso 0.”}}) IFUR db.meetups.remove({”name”:”mongoosejs”})

Slide 23

Slide 23 text

MongoDB Javascript Mongoose Insert Find Update Remove (CRUD) IFUR db.meetups.insert({”name”:”mongoosejs”,”place”:”Ruta N”}) IFUR db.meetups.find({”name”:”mongoosejs”}) IFUR db.meetups.update({”name”:”mongoosejs”}, {$set:{”description”:”Ruta N, piso 0.”}}) IFUR db.meetups.remove({”name”:”mongoosejs”})

Slide 24

Slide 24 text

MongoDB Javascript Mongoose Insert Find Update Remove (CRUD) IFUR db.meetups.insert({”name”:”mongoosejs”,”place”:”Ruta N”}) IFUR db.meetups.find({”name”:”mongoosejs”}) IFUR db.meetups.update({”name”:”mongoosejs”}, {$set:{”description”:”Ruta N, piso 0.”}}) IFUR db.meetups.remove({”name”:”mongoosejs”})

Slide 25

Slide 25 text

MongoDB Javascript Mongoose Insert Find Update Remove (CRUD) IFUR db.meetups.insert({”name”:”mongoosejs”,”place”:”Ruta N”}) IFUR db.meetups.find({”name”:”mongoosejs”}) IFUR db.meetups.update({”name”:”mongoosejs”}, {$set:{”description”:”Ruta N, piso 0.”}}) IFUR db.meetups.remove({”name”:”mongoosejs”})

Slide 26

Slide 26 text

MongoDB Javascript Mongoose NodeJS - IOJS NodeJS es una plataforma de javascript construida sobre el ”motor” V8 de Chrome. https://nodejs.org// IOJS es un fork de NodeJS. Implementando ES6 y desarrollado bajo un modelo de gobierno abierto. https://iojs.org//

Slide 27

Slide 27 text

MongoDB Javascript Mongoose NodeJS - IOJS NodeJS es una plataforma de javascript construida sobre el ”motor” V8 de Chrome. https://nodejs.org// IOJS es un fork de NodeJS. Implementando ES6 y desarrollado bajo un modelo de gobierno abierto. https://iojs.org//

Slide 28

Slide 28 text

MongoDB Javascript Mongoose Mongoose Es una herramienta para el modelado de objetos MongoDB. Dise˜ nado para trabajar en un ambiente asincronico. instalaci´ on (En el directorio del proyecto.) # npm install mongoose --save

Slide 29

Slide 29 text

MongoDB Javascript Mongoose Mongoose Es una herramienta para el modelado de objetos MongoDB. Dise˜ nado para trabajar en un ambiente asincronico. instalaci´ on (En el directorio del proyecto.) # npm install mongoose --save

Slide 30

Slide 30 text

MongoDB Javascript Mongoose Entendiendo mongoosejs Esquema Un esquema es mapeado como una colecci´ on en MongoDB y define la forma de los documentos con esa colecci´ on.

Slide 31

Slide 31 text

MongoDB Javascript Mongoose Schema 1 var mongoose = require(’mongoose ’); 2 var schema = mongoose.schema; 3 var userSchema = new Schema ({ 4 firstName:String , 5 lastName:String , 6 telefones :{ 7 primary:String , 8 secundary:String 9 }, 10 hobbies:Array 11 }); Tipos: Number, Date, Buffer, Boolean, mixed and ObjectId.

Slide 32

Slide 32 text

MongoDB Javascript Mongoose Entendiendo mongoosejs model Un modelo es un constructor compilado de nuestra definici´ on de esquema. y representan los documentos que pueden ser guardados y recuperados de la base de datos.

Slide 33

Slide 33 text

MongoDB Javascript Mongoose Model 1 var User = mongoose.model(’User ’,userSchema); Ya tenemos a User listo para Insertar, encontrar, actualizar y eliminar. Pero adem´ as, le podemos crear nuestras propias acciones al schema. 1 userSchema.methods. findSimilarLastNames = function (cb ) { 2 return this.model(’User ’).find ({ lastName: this. lastName }, cb); 3 }

Slide 34

Slide 34 text

MongoDB Javascript Mongoose Metodos estaticos Statics Agregar metodos estaticos a un modelo es simple. 1 userSchema.statics.findByName = function (name , cb) { 2 this.find ({ firstName: new RegExp(name , ’i’) }, cb); 3 }

Slide 35

Slide 35 text

MongoDB Javascript Mongoose Indexes Los indices se pueden definir a nivel de esquema o a nivel de campo. Campo 1 firstName :{ type:String , index:true} Esquema 1 userSchema.index ({ firstName :1});

Slide 36

Slide 36 text

MongoDB Javascript Mongoose Virtuals Los metodos virtuales no se pueden persistir. Estos pueden ser GET o SET. GET: ´ utiles para para formatear o combinar campos. SET: ´ utiles para descomponer un valor en m´ ultiples valores.

Slide 37

Slide 37 text

MongoDB Javascript Mongoose Virtuals GET - SET 1 userSchema.virtual(’fullName ’).get(function () { 2 return this.firstName + ’ ’ + this.lastName; 3 }); 1 userSchema.virtual(’fullName ’).set(function (fullName) { 2 var split = fullName.split(’ ’); 3 this.firstName = split [0]; 4 this.lastName = split [1]; 5 });

Slide 38

Slide 38 text

MongoDB Javascript Mongoose Options Son un conjunto de opciones que son configurables. • autoIndex • capped • collection • id • id • read • mas...

Slide 39

Slide 39 text

MongoDB Javascript Mongoose Options Son un conjunto de opciones que son configurables. • autoIndex • capped • collection • id • id • read • mas...

Slide 40

Slide 40 text

MongoDB Javascript Mongoose Options Son un conjunto de opciones que son configurables. • autoIndex • capped • collection • id • id • read • mas...

Slide 41

Slide 41 text

MongoDB Javascript Mongoose Options Son un conjunto de opciones que son configurables. • autoIndex • capped • collection • id • id • read • mas...

Slide 42

Slide 42 text

MongoDB Javascript Mongoose Options Son un conjunto de opciones que son configurables. • autoIndex • capped • collection • id • id • read • mas...

Slide 43

Slide 43 text

MongoDB Javascript Mongoose Options Son un conjunto de opciones que son configurables. • autoIndex • capped • collection • id • id • read • mas...

Slide 44

Slide 44 text

MongoDB Javascript Mongoose Options Son un conjunto de opciones que son configurables. • autoIndex • capped • collection • id • id • read • mas...

Slide 45

Slide 45 text

MongoDB Javascript Mongoose Mas... • plugins • validadores (validate) • lanzadores (pre, post)

Slide 46

Slide 46 text

MongoDB Javascript Mongoose Mas... • plugins • validadores (validate) • lanzadores (pre, post)

Slide 47

Slide 47 text

MongoDB Javascript Mongoose Mas... • plugins • validadores (validate) • lanzadores (pre, post)

Slide 48

Slide 48 text

MongoDB Javascript Mongoose DEMO !!! =)

Slide 49

Slide 49 text

MongoDB Javascript Mongoose Comunidad 1. Meetup: medellinjs - mongodbmedellin 2. Twitter: @medellinjs - @mongodbmedelln - @avanet 3. Facebook: /mongodbmedellin /avanet 4. gitter (chat): https://gitter.im/coljs/medellinjs 5. gitter (chat): https://gitter.im/MongoDBMedellin/Meetup

Slide 50

Slide 50 text

MongoDB Javascript Mongoose Comunidad 1. Meetup: medellinjs - mongodbmedellin 2. Twitter: @medellinjs - @mongodbmedelln - @avanet 3. Facebook: /mongodbmedellin /avanet 4. gitter (chat): https://gitter.im/coljs/medellinjs 5. gitter (chat): https://gitter.im/MongoDBMedellin/Meetup

Slide 51

Slide 51 text

MongoDB Javascript Mongoose Comunidad 1. Meetup: medellinjs - mongodbmedellin 2. Twitter: @medellinjs - @mongodbmedelln - @avanet 3. Facebook: /mongodbmedellin /avanet 4. gitter (chat): https://gitter.im/coljs/medellinjs 5. gitter (chat): https://gitter.im/MongoDBMedellin/Meetup

Slide 52

Slide 52 text

MongoDB Javascript Mongoose Comunidad 1. Meetup: medellinjs - mongodbmedellin 2. Twitter: @medellinjs - @mongodbmedelln - @avanet 3. Facebook: /mongodbmedellin /avanet 4. gitter (chat): https://gitter.im/coljs/medellinjs 5. gitter (chat): https://gitter.im/MongoDBMedellin/Meetup

Slide 53

Slide 53 text

MongoDB Javascript Mongoose Comunidad 1. Meetup: medellinjs - mongodbmedellin 2. Twitter: @medellinjs - @mongodbmedelln - @avanet 3. Facebook: /mongodbmedellin /avanet 4. gitter (chat): https://gitter.im/coljs/medellinjs 5. gitter (chat): https://gitter.im/MongoDBMedellin/Meetup

Slide 54

Slide 54 text

MongoDB Javascript Mongoose Donde aprender javascript (nodeJS) http://nodeschool.io// MongoDB https://university.mongodb.com/

Slide 55

Slide 55 text

MongoDB Javascript Mongoose Preguntas

Slide 56

Slide 56 text

MongoDB Javascript Mongoose Gracias !!! =)