mongoid
DESCRIPTION
une simpTRANSCRIPT
Mongoid
Mongoid
Cyril Mougel
17 Janvier 2013
Mongoid
Mongoid c’est ?
1 Mongoid c’est ?
2 Mais MongoDB ?
3 Mongoid c’est aussi ?
Mongoid
Mongoid c’est ?
Qu’est ce que Mongoid ?
Un ODM Object Document Model
Ecrit en Ruby
API comme ActiveRecord
Mongoid
Mongoid c’est ?
Exemple simple
class User
include Mongoid :: Document
end
Mongoid
Mongoid c’est ?
Resultat
> user = User.new
=> #<User _id: 50 f07c2444fd9947a7000001 , _type:
nil >
Mongoid
Mongoid c’est ?
Definition des champs
Mongoid
Mongoid c’est ?
class User
include Mongoid :: Document
field :first_name
field :last_name
end
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"
Mongoid
Mongoid c’est ?
Gestion de la Coercion
Mongoid
Mongoid c’est ?
class User
include Mongoid :: Document
field :first_name , :type => String
field :last_name , :type => String
end
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"
Mongoid
Mongoid c’est ?
Gestion d’un valeur par defaut
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
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"
Mongoid
Mongoid c’est ?
Multiple Type de base
Mongoid
Mongoid c’est ?
BigDecimal
Boolean
Integer
String
Symbol
Float
Date
DateTime
Time
Array
Hash
Mongoid
Mais MongoDB?
1 Mongoid c’est ?
2 Mais MongoDB ?
3 Mongoid c’est aussi ?
Mongoid
Mais MongoDB?
Base NoSQLNoSQL == Not Only SQL
Mongoid
Mais MongoDB?
Base de donnee orientedocument
stockage sous format BSON
BSON == Binary JSON
Mongoid
Mais MongoDB?
Base de donnee orientedocument
Creation automatique du schema
Pas d’obligation d’homogeneite des documents
Mongoid
Mais MongoDB?
Pas de jointure
Mongoid
Mais MongoDB?
Query Operator
$in
$nin
$or
$gt
$lt
etc..
Mongoid
Mongoid c’est aussi ?
1 Mongoid c’est ?
2 Mais MongoDB ?
3 Mongoid c’est aussi ?
Mongoid
Mongoid c’est aussi ?
Include ActiveModel
Gestion des erreurs
Gestion des callbacks
Mongoid
Mongoid c’est aussi ?
Gestion des associations
Mongoid
Mongoid c’est aussi ?
Association entre collection
has many :orders
belongs to :user
Mongoid
Mongoid c’est aussi ?
class User
include Mongoid :: Document
has_many :posts
end
class Post
include Mongoid :: Document
belongs_to :user
end
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 >]
Mongoid
Mongoid c’est aussi ?
Association des documentsembarques
embeds many :comments
embedded in :post
Mongoid
Mongoid c’est aussi ?
class Post
include Mongoid :: Document
embeds_many :comments
end
class Comment
include Mongoid :: Document
embedded_in :post
end
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
}]
}
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
Mongoid
Mongoid c’est aussi ?
Les criterias sont chainable
Mongoid
Mongoid c’est aussi ?
Les criterias sont evalues demaniere lazy
Mongoid
Mongoid c’est aussi ?
Finder
Model.all
Model.first
Model.last
Model.exists ?
Model.find
Mongoid
Mongoid c’est aussi ?
MopedMongoDB driver developpe par la communaute Mongoid
Gestion plus threadsafe par session
Mongoid
Mongoid c’est aussi ?
Plus d’information ?RTFM
http ://mongoid.org