SlideShare une entreprise Scribd logo
compiegne.rb 15 nov. 2012
    MongoDB / MongoId
                 Présentation




Vincent Tabary                  Aymeric Brisse
compiegne.rb 15 nov. 2012
1. NoSQL
2. MongoDB
3. MongoId
4. Bibliographie
compiegne.rb 15 nov. 2012
1. NoSQL
SGBD relationnels limités :
* pour load balancing
* pour une logique de « Big Data »


SGBD démocratisé depuis 2009
Systèmes destinés à Internet


Pourquoi NoSQL ?
   Ne supporte pas langage SQL
compiegne.rb 15 nov. 2012
1. NoSQL

Basé sur le principe des tableaux associatifs
Intégre des technologies :
●   clustering
●   réplication
Retire certaines logiques :
●   langage SQL
●   stockage sous forme de matrice
Meilleures performances sur requêtes simples
compiegne.rb 15 nov. 2012
1. NoSQL
Exemples de serveurs :
●   Cassandra : Facebook, Twitter, Digg
●   BigTable : Google
●   CouchDB
●   Redis
●   Riak
●   SimpleDB : Amazon
●   MongoDB
compiegne.rb 15 nov. 2012
2. MongoDB




Serveur NoSQL open source
Réplication
Sharding : répartition sur des clusters
Requêtes
Implémentation de Map/Reduce (JS)
Peut stocker des fichiers
compiegne.rb 15 nov. 2012
2. MongoDB

Drivers disponibles pour plusieurs langages :
●   Python
●   Ruby
●   Java
●   Javascript (Node.js)
●   C++
●   PHP
●   ...
compiegne.rb 15 nov. 2012
2. MongoDB - Présentation




MongoDB ("humongous" / “énorme”) est une
BDD open source NoSQL écrite en C++
distribuée sous license AGPL.
compiegne.rb 15 nov. 2012
2. MongoDB - Présentation
Caractéristiques :


- BDD orienté Document : objects structurés de type
JSON sans schéma
- Indexes sur n’importe quel attribut
- Replication & High Availability, Auto-Sharding
(horizontal scale)
- Requêtes orientés document
- Updates rapides : Atomic modifiers
- Map/Reduce : Process des données et agrégations
compiegne.rb 15 nov. 2012
2. MongoDB - BDD orientée Document
- Objets structurés au format BSON (JSON binaire), sans
schéma prédéterminé.
- Documents enregistrés dans des collections
  Collection “Users”
  {
  "_id": ObjectId("4efa8d2b7d284dad101e4bc7"),
  "name": "James Bond",
  "login": "james",
  "age": 50,
  "adress":
     {
      "street" : "42 Class Street",
      "city": "Londres"
     }
  }
- Types : string, integer, boolean, double, null, array, object,
date, object id, binary data, regular expression.
compiegne.rb 15 nov. 2012
2. MongoDB - BDD orientée Document



- Linked


  # collection ‘users’
  {
  "_id": ObjectId("4efa8d2b7d284dad101e4bc7"),
  "group_ids" : [
        ObjectId("50a4f7464efbbe201a000003"),
        ObjectId("50a4fd234efbbedd1a00000f")
  ],
  }
compiegne.rb 15 nov. 2012
2. MongoDB - BDD orientée Document

- Embed (données “pré-jointes”)

  # collection ‘users’
  {
  "_id": ObjectId("4efa8d2b7d284dad101e4bc7"),
  "thumbnails":
       [{
        "_id": ObjectId("4efa8d2b7d284dbc987a789c"),
        "url": "http://cloud.pm.com/resources/hash.jpg"
       },
     {
        "_id": ObjectId("4efa8d2b7d284dbc987a789d"),
        "url": "http://cloud.pm.com/resources/hash2.jpg"
       },
     ]
  }
compiegne.rb 15 nov. 2012
2. MongoDB - Queries

- Récupérer les personnes ayant pour login “james”
   > db.users.find( { login : "james" } )


- Récupérer les personnes vivant à Londres
   > db.users.find( { adress.city : "Londres" } )


- Récupérer les groupes d’une personne
   > var user = db.users.findOne( { _id:
ObjectId("50a4f7264efbbe201a000001") });
   > db.groups.find( { _id : { $in : user.groups } });
compiegne.rb 15 nov. 2012
2. MongoDB - Atomic Modifiers
- Pas de support de transactions (sharding, dead locks, etc.)
- Mais Atomic Modifiers


$set - set a particular value
$unset - delete a particular field
$inc - increment a particular value by a certain amount
$push - append a value to an array
$pushAll - append several values to an array
$pull - remove a value(s) from an existing array
$pullAll - remove several value(s) from an existing array
$bit - bitwise operations
compiegne.rb 15 nov. 2012
2. MongoDB - Atomic Modifiers




- Augmenter le nombre de votes d’un media


> db.medias.update( { _id :
ObjectId("4efa8d2b7d284dad101e4bc7") } , { $inc :
{ votes_count : 1 } }
compiegne.rb 15 nov. 2012
2. MongoDB - Designer sa BDD (Schéma)
- Base de données relationnelles : schéma orienté
“normalisation” (3NF) - Théorique
- MongoDB : schéma orienté “usage” et “performance” -
Pratique


- Les questions à se poser :
●   Embed VS Linked ?
●   Combien de collections ?
●   Quelles opérations atomiques sont nécessaires ?
●   Quels indexes créer ?
●   Comment partitionner ?
compiegne.rb 15 nov. 2012
2. MongoDB


A savoir sur MongoDB :
●   Pas d'authentification par défaut
●   Version 32 bits limitée à 2GO de données
●   1 document est limité à 16mo (vs 4 avt)
●   Verrouillage global des données partagées
    ●   Jusque version 2.0
    ●   Meilleures performances en 2.2+
compiegne.rb 15 nov. 2012
3. MongoId



Plusieurs gems pour MongoDB :
●   MongoId
●   Mongo Ruby Driver, officiel
●   MongoMapper
●   ...
compiegne.rb 15 nov. 2012
3. MongoId


Communauté active
Basé sur ActiveSupport
Validations
Requêtes grâce à Origin
Polymorphisme
Proche de ActiveRecord :
●   has_many, belongs_to
compiegne.rb 15 nov. 2012
3. MongoId



Pris en charge pour de nombreuses gems :
●   Carrierwave-mongoid
●   ActiveAdmin (patch)
●   mongoid-rspec
●   delayed_job_mongoid
●   mongoid_session_store
compiegne.rb 15 nov. 2012
3. MongoId



Pris en charge pour de nombreuses gems :
●   Carrierwave-mongoid
●   ActiveAdmin (patch)
●   mongoid-rspec
●   delayed_job_mongoid
●   mongoid_session_store
compiegne.rb 15 nov. 2012
3. MongoId


Gestion des documents
Gestion des documents « embedded »
Gestion des « extras »
●   Caching
●   Versionning
●   Paranoia
Gestion de Map/Reduce
compiegne.rb 15 nov. 2012
3. MongoId

Création d'une classe :

class User
  include Mongoid::Document
  include Mongoid::Timestamps

 field :firstname, :type => String, :default => ""
 field :lastname, :type => String, :default => ""
 validates :lastname, :presence => true

  has_and_belongs_to_many :projects, :inverse_of =>
:members
  embeds_many :tasks, :inverse_of => :user
end
compiegne.rb 15 nov. 2012
3. MongoId

Polymorphisme :
class User
  include Mongoid::Document
  include Mongoid::Timestamps

 embeds_many :tasks, :as => :owner
end
class Task
  include Mongoid::Document
  include Mongoid::Timestamps

 embedded_in :owner, :polymorphic => true
end
compiegne.rb 15 nov. 2012
3. MongoId
Requêtes :
user = User.where(:firstname => 'Vincent')
# #<User _id: 5060ea5fe77989e76b000001,
created_at: 2012-09-24 23:18:55 UTC, updated_at:
2012-11-02 13:34:46 UTC, firstname: "Vincent",
lastname: "Tabary">

User.count
User.all.count
# => 5

user.tasks.count
# => 4

Task.count
# => 0
compiegne.rb 15 nov. 2012
3. MongoId



Requêtes :
User.in(firstname:
['Vincent']).union.in(firstname:
['Aymeric']).count
# => 2

User.in(firstname: ['Vincent',
'Aymeric']).union.in(firstname: ['Aymeric',
'Paul']).count
# => 1
compiegne.rb 15 nov. 2012
3. MongoId



Extras :
class User
  include Mongoid::Document
  include Mongoid::Timestamps
  include Mongoid::Paranoia
  include Mongoid::Caching
  include Mongoid::Versionning
End
compiegne.rb 15 nov. 2012
6. Bibliographie




      http://fr.wikipedia.org/wiki/NoSQL
          http://www.mongodb.org/
 http://rsmith.co/2012/11/05/mongodb-gotc...
       https://www.ruby-toolbox.com...

Contenu connexe

PPTX
Webinaire 1 de la série Retour aux fondamentaux : Introduction à NoSQL
PPTX
Webinaire 4 de la série Retour aux fondamentaux : Indexation avancée, index d...
PPTX
Webinaire 3 de la série « Retour aux fondamentaux » : Conception de schémas :...
PDF
ENIB 2015-2016 - CAI Web - S01E01- Côté navigateur 2/3 - HTML5, CSS3, Twitte...
PDF
Tout ce que le getting started mongo db ne vous dira pas
PDF
PDF
MongoDB : la base NoSQL qui réinvente la gestion de données
PPTX
2014 03-26-appdevseries-session3-interactingwiththedatabase-fr-phpapp01-rev.
Webinaire 1 de la série Retour aux fondamentaux : Introduction à NoSQL
Webinaire 4 de la série Retour aux fondamentaux : Indexation avancée, index d...
Webinaire 3 de la série « Retour aux fondamentaux » : Conception de schémas :...
ENIB 2015-2016 - CAI Web - S01E01- Côté navigateur 2/3 - HTML5, CSS3, Twitte...
Tout ce que le getting started mongo db ne vous dira pas
MongoDB : la base NoSQL qui réinvente la gestion de données
2014 03-26-appdevseries-session3-interactingwiththedatabase-fr-phpapp01-rev.

Tendances (20)

PPTX
Pg jsonb format 16-9
PDF
ENIB 2015 2016 - CAI Web S02E01- Côté Navigateur 1/3 - HTTP, HTML, CSS JS
PDF
MongoDB et Elasticsearch, meilleurs ennemis ?
PDF
[Breizhcamp 2015] MongoDB et Elastic, meilleurs ennemis ?
PPTX
Créer des applications Java avec MongoDB
PDF
ENIB 2015-2016 - CAI Web - S01E01- Côté navigateur 1/3 - HTTP, HTML, CSS, JS
PPTX
Réussir une montée en charge avec MongoDB
PDF
ENIB 2015 2016 - CAI Web S02E01- Côté Navigateur 2/3 - HTML5 / CSS3 / Twitter...
PPTX
Retour aux fondamentaux : Penser en termes de documents
PDF
Toutes les raisons d'adopter MongoDB
PPTX
introduction à MongoDB
PDF
PDF
ToursJUG mongoDB
PDF
Enib cours c.a.i. web - séance #1 - html5 css3-js - 2
PDF
jQuery
PPTX
Gestion des données d'entreprise à l'ère de MongoDB et du Data Lake
PDF
SSL 2011 : Présentation de 2 bases noSQL
PPTX
Les nouveautés de MongoDB 3.6
PPTX
2014 04-09-fr - app dev series - session 4 - indexing
PPT
Dublin Core raffinement
Pg jsonb format 16-9
ENIB 2015 2016 - CAI Web S02E01- Côté Navigateur 1/3 - HTTP, HTML, CSS JS
MongoDB et Elasticsearch, meilleurs ennemis ?
[Breizhcamp 2015] MongoDB et Elastic, meilleurs ennemis ?
Créer des applications Java avec MongoDB
ENIB 2015-2016 - CAI Web - S01E01- Côté navigateur 1/3 - HTTP, HTML, CSS, JS
Réussir une montée en charge avec MongoDB
ENIB 2015 2016 - CAI Web S02E01- Côté Navigateur 2/3 - HTML5 / CSS3 / Twitter...
Retour aux fondamentaux : Penser en termes de documents
Toutes les raisons d'adopter MongoDB
introduction à MongoDB
ToursJUG mongoDB
Enib cours c.a.i. web - séance #1 - html5 css3-js - 2
jQuery
Gestion des données d'entreprise à l'ère de MongoDB et du Data Lake
SSL 2011 : Présentation de 2 bases noSQL
Les nouveautés de MongoDB 3.6
2014 04-09-fr - app dev series - session 4 - indexing
Dublin Core raffinement
Publicité

En vedette (20)

PPTX
MongoDB Shell Tips & Tricks
PDF
Zenika MongoDB Tour - REX Amadeus
PDF
MongoDB Management & Ansible
PDF
MongoDB day Paris 2012
KEY
Super marmite-pourquoi-choisir-mongodb
PDF
Alphorm.com-Formation MongoDB Administration
PPS
Agua
PPTX
Que Es Un Red Local
PPSX
No Hay Peor Ciego, Que El Que No Quiere Ver
PPT
Proyecto TIC en un centro educativo
PDF
Mesure d'audience sociale TV et Radio: Comment enfin donner une valeur au média
DOCX
Tutorial ..
DOCX
Las Redes Sociales úLtimamente Configuran MáS Del 50 (Reparado)
PPT
El Ordenador
PPTX
Que Es Una Red LóGica
PPSX
Estrategia Empresaria - Fernando Cerutti en Area del Vino
PDF
Les 10 clés pour réussir sa présence en ligne soi-même
PPT
Alimentacion
PDF
Prévention des infections et stratégies de contrôle en soins à domicile et so...
DOC
inf 324 01 p05 2 razonamiento critico
MongoDB Shell Tips & Tricks
Zenika MongoDB Tour - REX Amadeus
MongoDB Management & Ansible
MongoDB day Paris 2012
Super marmite-pourquoi-choisir-mongodb
Alphorm.com-Formation MongoDB Administration
Agua
Que Es Un Red Local
No Hay Peor Ciego, Que El Que No Quiere Ver
Proyecto TIC en un centro educativo
Mesure d'audience sociale TV et Radio: Comment enfin donner une valeur au média
Tutorial ..
Las Redes Sociales úLtimamente Configuran MáS Del 50 (Reparado)
El Ordenador
Que Es Una Red LóGica
Estrategia Empresaria - Fernando Cerutti en Area del Vino
Les 10 clés pour réussir sa présence en ligne soi-même
Alimentacion
Prévention des infections et stratégies de contrôle en soins à domicile et so...
inf 324 01 p05 2 razonamiento critico
Publicité

Similaire à Présentation mongoDB et mongoId (20)

PPT
No sql, au-delà du buzz
PPTX
MongoDB_presentation_ye.pptx
PPTX
MongoDB_presentation_tts.pptx
PPTX
MongoDB_presentation_p.pptx
PPTX
MongoDB_presentation.pptx
PDF
Tout ce que le getting started mongodb ne vous dira pas
PPTX
MongoDB_presentation_example.pptx
PPTX
MongoDB_presentation_o.pptx
PPTX
MongoDB_presentation_Moyou.pptx
PDF
Devoir Final dans No Sql Base de donnée avec corrigé
PPTX
MongoDB_presentation_xmls.pptx
PPTX
MongoDB.pptx
KEY
L'avenir de LAMP
ODP
Base NoSql et Python
PDF
Mongo db et nosql
PDF
Tout ce que le getting started MongoDB ne vous dira pas
KEY
Node.js et MongoDB: Mongoose
ODP
Ruby et MongoDB dans la pratique, MongoFR
PDF
Cas d'usage MongoDB chez Voyages-sncf.com
PPTX
2014 03-26-appdevseries-session3-interactingwiththedatabase-fr-phpapp01
No sql, au-delà du buzz
MongoDB_presentation_ye.pptx
MongoDB_presentation_tts.pptx
MongoDB_presentation_p.pptx
MongoDB_presentation.pptx
Tout ce que le getting started mongodb ne vous dira pas
MongoDB_presentation_example.pptx
MongoDB_presentation_o.pptx
MongoDB_presentation_Moyou.pptx
Devoir Final dans No Sql Base de donnée avec corrigé
MongoDB_presentation_xmls.pptx
MongoDB.pptx
L'avenir de LAMP
Base NoSql et Python
Mongo db et nosql
Tout ce que le getting started MongoDB ne vous dira pas
Node.js et MongoDB: Mongoose
Ruby et MongoDB dans la pratique, MongoFR
Cas d'usage MongoDB chez Voyages-sncf.com
2014 03-26-appdevseries-session3-interactingwiththedatabase-fr-phpapp01

Dernier (7)

PPTX
Souveraineté numérique - Définition et enjeux pour les entreprises et les dév...
PDF
FORMATION COMPLETE EN EXCEL DONE BY MR. NYONGA BRICE.pdf
PDF
FORMATION EN Programmation En Langage C.pdf
PPTX
Presentation_Securite_Reseaux_Bac+2.pptx
PDF
Modems expliqués- votre passerelle vers Internet.pdf
PDF
presentation_with_intro_compressee IEEE EPS France
PDF
Tendances tech 2025 - SFEIR & WENVISION.pdf
Souveraineté numérique - Définition et enjeux pour les entreprises et les dév...
FORMATION COMPLETE EN EXCEL DONE BY MR. NYONGA BRICE.pdf
FORMATION EN Programmation En Langage C.pdf
Presentation_Securite_Reseaux_Bac+2.pptx
Modems expliqués- votre passerelle vers Internet.pdf
presentation_with_intro_compressee IEEE EPS France
Tendances tech 2025 - SFEIR & WENVISION.pdf

Présentation mongoDB et mongoId

  • 1. compiegne.rb 15 nov. 2012 MongoDB / MongoId Présentation Vincent Tabary Aymeric Brisse
  • 2. compiegne.rb 15 nov. 2012 1. NoSQL 2. MongoDB 3. MongoId 4. Bibliographie
  • 3. compiegne.rb 15 nov. 2012 1. NoSQL SGBD relationnels limités : * pour load balancing * pour une logique de « Big Data » SGBD démocratisé depuis 2009 Systèmes destinés à Internet Pourquoi NoSQL ? Ne supporte pas langage SQL
  • 4. compiegne.rb 15 nov. 2012 1. NoSQL Basé sur le principe des tableaux associatifs Intégre des technologies : ● clustering ● réplication Retire certaines logiques : ● langage SQL ● stockage sous forme de matrice Meilleures performances sur requêtes simples
  • 5. compiegne.rb 15 nov. 2012 1. NoSQL Exemples de serveurs : ● Cassandra : Facebook, Twitter, Digg ● BigTable : Google ● CouchDB ● Redis ● Riak ● SimpleDB : Amazon ● MongoDB
  • 6. compiegne.rb 15 nov. 2012 2. MongoDB Serveur NoSQL open source Réplication Sharding : répartition sur des clusters Requêtes Implémentation de Map/Reduce (JS) Peut stocker des fichiers
  • 7. compiegne.rb 15 nov. 2012 2. MongoDB Drivers disponibles pour plusieurs langages : ● Python ● Ruby ● Java ● Javascript (Node.js) ● C++ ● PHP ● ...
  • 8. compiegne.rb 15 nov. 2012 2. MongoDB - Présentation MongoDB ("humongous" / “énorme”) est une BDD open source NoSQL écrite en C++ distribuée sous license AGPL.
  • 9. compiegne.rb 15 nov. 2012 2. MongoDB - Présentation Caractéristiques : - BDD orienté Document : objects structurés de type JSON sans schéma - Indexes sur n’importe quel attribut - Replication & High Availability, Auto-Sharding (horizontal scale) - Requêtes orientés document - Updates rapides : Atomic modifiers - Map/Reduce : Process des données et agrégations
  • 10. compiegne.rb 15 nov. 2012 2. MongoDB - BDD orientée Document - Objets structurés au format BSON (JSON binaire), sans schéma prédéterminé. - Documents enregistrés dans des collections Collection “Users” { "_id": ObjectId("4efa8d2b7d284dad101e4bc7"), "name": "James Bond", "login": "james", "age": 50, "adress": { "street" : "42 Class Street", "city": "Londres" } } - Types : string, integer, boolean, double, null, array, object, date, object id, binary data, regular expression.
  • 11. compiegne.rb 15 nov. 2012 2. MongoDB - BDD orientée Document - Linked # collection ‘users’ { "_id": ObjectId("4efa8d2b7d284dad101e4bc7"), "group_ids" : [ ObjectId("50a4f7464efbbe201a000003"), ObjectId("50a4fd234efbbedd1a00000f") ], }
  • 12. compiegne.rb 15 nov. 2012 2. MongoDB - BDD orientée Document - Embed (données “pré-jointes”) # collection ‘users’ { "_id": ObjectId("4efa8d2b7d284dad101e4bc7"), "thumbnails": [{ "_id": ObjectId("4efa8d2b7d284dbc987a789c"), "url": "http://cloud.pm.com/resources/hash.jpg" }, { "_id": ObjectId("4efa8d2b7d284dbc987a789d"), "url": "http://cloud.pm.com/resources/hash2.jpg" }, ] }
  • 13. compiegne.rb 15 nov. 2012 2. MongoDB - Queries - Récupérer les personnes ayant pour login “james” > db.users.find( { login : "james" } ) - Récupérer les personnes vivant à Londres > db.users.find( { adress.city : "Londres" } ) - Récupérer les groupes d’une personne > var user = db.users.findOne( { _id: ObjectId("50a4f7264efbbe201a000001") }); > db.groups.find( { _id : { $in : user.groups } });
  • 14. compiegne.rb 15 nov. 2012 2. MongoDB - Atomic Modifiers - Pas de support de transactions (sharding, dead locks, etc.) - Mais Atomic Modifiers $set - set a particular value $unset - delete a particular field $inc - increment a particular value by a certain amount $push - append a value to an array $pushAll - append several values to an array $pull - remove a value(s) from an existing array $pullAll - remove several value(s) from an existing array $bit - bitwise operations
  • 15. compiegne.rb 15 nov. 2012 2. MongoDB - Atomic Modifiers - Augmenter le nombre de votes d’un media > db.medias.update( { _id : ObjectId("4efa8d2b7d284dad101e4bc7") } , { $inc : { votes_count : 1 } }
  • 16. compiegne.rb 15 nov. 2012 2. MongoDB - Designer sa BDD (Schéma) - Base de données relationnelles : schéma orienté “normalisation” (3NF) - Théorique - MongoDB : schéma orienté “usage” et “performance” - Pratique - Les questions à se poser : ● Embed VS Linked ? ● Combien de collections ? ● Quelles opérations atomiques sont nécessaires ? ● Quels indexes créer ? ● Comment partitionner ?
  • 17. compiegne.rb 15 nov. 2012 2. MongoDB A savoir sur MongoDB : ● Pas d'authentification par défaut ● Version 32 bits limitée à 2GO de données ● 1 document est limité à 16mo (vs 4 avt) ● Verrouillage global des données partagées ● Jusque version 2.0 ● Meilleures performances en 2.2+
  • 18. compiegne.rb 15 nov. 2012 3. MongoId Plusieurs gems pour MongoDB : ● MongoId ● Mongo Ruby Driver, officiel ● MongoMapper ● ...
  • 19. compiegne.rb 15 nov. 2012 3. MongoId Communauté active Basé sur ActiveSupport Validations Requêtes grâce à Origin Polymorphisme Proche de ActiveRecord : ● has_many, belongs_to
  • 20. compiegne.rb 15 nov. 2012 3. MongoId Pris en charge pour de nombreuses gems : ● Carrierwave-mongoid ● ActiveAdmin (patch) ● mongoid-rspec ● delayed_job_mongoid ● mongoid_session_store
  • 21. compiegne.rb 15 nov. 2012 3. MongoId Pris en charge pour de nombreuses gems : ● Carrierwave-mongoid ● ActiveAdmin (patch) ● mongoid-rspec ● delayed_job_mongoid ● mongoid_session_store
  • 22. compiegne.rb 15 nov. 2012 3. MongoId Gestion des documents Gestion des documents « embedded » Gestion des « extras » ● Caching ● Versionning ● Paranoia Gestion de Map/Reduce
  • 23. compiegne.rb 15 nov. 2012 3. MongoId Création d'une classe : class User include Mongoid::Document include Mongoid::Timestamps field :firstname, :type => String, :default => "" field :lastname, :type => String, :default => "" validates :lastname, :presence => true has_and_belongs_to_many :projects, :inverse_of => :members embeds_many :tasks, :inverse_of => :user end
  • 24. compiegne.rb 15 nov. 2012 3. MongoId Polymorphisme : class User include Mongoid::Document include Mongoid::Timestamps embeds_many :tasks, :as => :owner end class Task include Mongoid::Document include Mongoid::Timestamps embedded_in :owner, :polymorphic => true end
  • 25. compiegne.rb 15 nov. 2012 3. MongoId Requêtes : user = User.where(:firstname => 'Vincent') # #<User _id: 5060ea5fe77989e76b000001, created_at: 2012-09-24 23:18:55 UTC, updated_at: 2012-11-02 13:34:46 UTC, firstname: "Vincent", lastname: "Tabary"> User.count User.all.count # => 5 user.tasks.count # => 4 Task.count # => 0
  • 26. compiegne.rb 15 nov. 2012 3. MongoId Requêtes : User.in(firstname: ['Vincent']).union.in(firstname: ['Aymeric']).count # => 2 User.in(firstname: ['Vincent', 'Aymeric']).union.in(firstname: ['Aymeric', 'Paul']).count # => 1
  • 27. compiegne.rb 15 nov. 2012 3. MongoId Extras : class User include Mongoid::Document include Mongoid::Timestamps include Mongoid::Paranoia include Mongoid::Caching include Mongoid::Versionning End
  • 28. compiegne.rb 15 nov. 2012 6. Bibliographie http://fr.wikipedia.org/wiki/NoSQL http://www.mongodb.org/ http://rsmith.co/2012/11/05/mongodb-gotc... https://www.ruby-toolbox.com...