mongoid

37
Mongoid Mongoid Cyril Mougel 17 Janvier 2013

Upload: cyril-mougel

Post on 18-May-2015

528 views

Category:

Technology


0 download

DESCRIPTION

une simp

TRANSCRIPT

Page 1: Mongoid

Mongoid

Mongoid

Cyril Mougel

17 Janvier 2013

Page 2: Mongoid

Mongoid

Mongoid c’est ?

1 Mongoid c’est ?

2 Mais MongoDB ?

3 Mongoid c’est aussi ?

Page 3: Mongoid

Mongoid

Mongoid c’est ?

Qu’est ce que Mongoid ?

Un ODM Object Document Model

Ecrit en Ruby

API comme ActiveRecord

Page 4: Mongoid

Mongoid

Mongoid c’est ?

Exemple simple

class User

include Mongoid :: Document

end

Page 5: Mongoid

Mongoid

Mongoid c’est ?

Resultat

> user = User.new

=> #<User _id: 50 f07c2444fd9947a7000001 , _type:

nil >

Page 6: Mongoid

Mongoid

Mongoid c’est ?

Definition des champs

Page 7: Mongoid

Mongoid

Mongoid c’est ?

class User

include Mongoid :: Document

field :first_name

field :last_name

end

Page 8: Mongoid

Mongoid

Mongoid c’est ?

> user = User.new(: first_name => 123, :last_name

=> "Mougel")

=> #<User _id: 50 f07c4c44fd9947a7000003 , _type:

nil , first_name: 123, last_name: "Mougel">

> user.first_name

=> 123

> user.last_name

=> "Mougel"

Page 9: Mongoid

Mongoid

Mongoid c’est ?

Gestion de la Coercion

Page 10: Mongoid

Mongoid

Mongoid c’est ?

class User

include Mongoid :: Document

field :first_name , :type => String

field :last_name , :type => String

end

Page 11: Mongoid

Mongoid

Mongoid c’est ?

> user = User.new(: first_name => 123, :last_name

=> true)

=> #<User _id: 50 f07c4c44fd9947a7000003 , _type:

nil , first_name: "123", last_name: "true">

> user.first_name

=> "123"

> user.last_name

=> "true"

Page 12: Mongoid

Mongoid

Mongoid c’est ?

Gestion d’un valeur par defaut

Page 13: Mongoid

Mongoid

Mongoid c’est ?

class User

include Mongoid :: Document

field :first_name , :type => String

field :last_name , :type => String

field :location , :type => String ,

:default => "Nantes"

end

Page 14: Mongoid

Mongoid

Mongoid c’est ?

> user = User.new

=> #<User _id: 50 f07cbc44fd9947a7000004 , _type:

nil , first_name: nil , last_name: nil ,

location: "Nantes">

> user.first_name

=> nil

> user.location

=> "Nantes"

Page 15: Mongoid

Mongoid

Mongoid c’est ?

Multiple Type de base

Page 16: Mongoid

Mongoid

Mongoid c’est ?

BigDecimal

Boolean

Integer

String

Symbol

Float

Date

DateTime

Time

Array

Hash

Page 17: Mongoid

Mongoid

Mais MongoDB?

1 Mongoid c’est ?

2 Mais MongoDB ?

3 Mongoid c’est aussi ?

Page 18: Mongoid

Mongoid

Mais MongoDB?

Base NoSQLNoSQL == Not Only SQL

Page 19: Mongoid

Mongoid

Mais MongoDB?

Base de donnee orientedocument

stockage sous format BSON

BSON == Binary JSON

Page 20: Mongoid

Mongoid

Mais MongoDB?

Base de donnee orientedocument

Creation automatique du schema

Pas d’obligation d’homogeneite des documents

Page 21: Mongoid

Mongoid

Mais MongoDB?

Pas de jointure

Page 22: Mongoid

Mongoid

Mais MongoDB?

Query Operator

$in

$nin

$or

$gt

$lt

etc..

Page 23: Mongoid

Mongoid

Mongoid c’est aussi ?

1 Mongoid c’est ?

2 Mais MongoDB ?

3 Mongoid c’est aussi ?

Page 24: Mongoid

Mongoid

Mongoid c’est aussi ?

Include ActiveModel

Gestion des erreurs

Gestion des callbacks

Page 25: Mongoid

Mongoid

Mongoid c’est aussi ?

Gestion des associations

Page 26: Mongoid

Mongoid

Mongoid c’est aussi ?

Association entre collection

has many :orders

belongs to :user

Page 27: Mongoid

Mongoid

Mongoid c’est aussi ?

class User

include Mongoid :: Document

has_many :posts

end

class Post

include Mongoid :: Document

belongs_to :user

end

Page 28: Mongoid

Mongoid

Mongoid c’est aussi ?

> user = User.new

> user.posts = [ Post.new ]

> user.save

> user

=> #<User _id: 50 f07c2444fd9947a7000001 , _type:

nil >

> user.posts

=> [#<Post _id: 50 f07c2444fd9947a7000002 , _type:

nil >]

Page 29: Mongoid

Mongoid

Mongoid c’est aussi ?

Association des documentsembarques

embeds many :comments

embedded in :post

Page 30: Mongoid

Mongoid

Mongoid c’est aussi ?

class Post

include Mongoid :: Document

embeds_many :comments

end

class Comment

include Mongoid :: Document

embedded_in :post

end

Page 31: Mongoid

Mongoid

Mongoid c’est aussi ?

> user = User.new

> user.comments = [ Comment.new ]

> user.save

> user

=> #<User _id: 50 f07c2444fd9947a7000001 , _type:

nil >

{

’_id’: 50 f07c2444fd9947a7000001 ,

’comments ’: [{

’_id’: 50 f07c2444fd9947a7000002

}]

}

Page 32: Mongoid

Mongoid

Mongoid c’est aussi ?

Criteria

Model.where

Model.all in

Model.any in

Model.any of

Model.asc

Model.desc

Model.limit

Model.only

Page 33: Mongoid

Mongoid

Mongoid c’est aussi ?

Les criterias sont chainable

Page 34: Mongoid

Mongoid

Mongoid c’est aussi ?

Les criterias sont evalues demaniere lazy

Page 35: Mongoid

Mongoid

Mongoid c’est aussi ?

Finder

Model.all

Model.first

Model.last

Model.exists ?

Model.find

Page 36: Mongoid

Mongoid

Mongoid c’est aussi ?

MopedMongoDB driver developpe par la communaute Mongoid

Gestion plus threadsafe par session

Page 37: Mongoid

Mongoid

Mongoid c’est aussi ?

Plus d’information ?RTFM

http ://mongoid.org