The document provides an introduction to using MongoDB as the database for Rails applications. It discusses how MongoDB is a document database that stores data as JSON-like documents. It then demonstrates how to set up a Rails application to use Mongoid as the ORM to interact with a MongoDB database. Models, relationships, and queries are demonstrated for a sample application to track video game achievements. The document shows how to generate models, define fields and validation, embed documents, and perform queries.
5. MongoDB Is...
Document database (NoSql) (1)
Data is stored as BSON Objects (looks exactly like
JSON)
Gives high performance, high availability, and easy
scalability
Gives you ultimate flexibility with features like...
Sweet Data Types: Hashes and Arrays
Allows you to nest documents
Allows for dynamic document attributes
(1) Despite the word “NoSql” you can still create a relational database with MongoDB
6. MongoDB In Relational Terms
MongoDB
MySql
Document
Row
Collection
Table
Database
Database
Index
Index
7. More MongoDB Knowledge
Two types of relations:
Embedded and Referenced
No such thing as a “join”, this type of thing can be
achieved with embedded documents and linking
Has a built in aggregation framework and map
reducing support.
You still have 1-1, 1-n, n-n relations
9. How Does Rails Talk To MongoDB?
Mongoid - A Object-DocumentMapper(ODM) (1)
(1) There are other ODM’s out there for MongoDB, MongoMapper for example. I feel Mongoid is
far and away the best one. Has a supportive and active maintainer named Durran Jordan.
10. Why Not Use ActiveRecord?
ActiveRecord does not have built in
support for MongoDB. Mongoid replaces
it.
However, it still uses ActiveModel. You
still have all the validation goodness.
11. Getting Started
Install MongoDB...Kind of important
Mac:
Windows:
http:/
/docs.mongodb.org/manual/tutorial/install-mongodb-on-windows/
Ubuntu:
http:/
/docs.mongodb.org/manual/tutorial/install-mongodb-on-ubuntu/
13. Modify Your Gemfile
Add the following to your gemfile, then
bundle (1)(2)
(1) Current public release of Mongoid doesn’t support Rails 4. To install Mongoid 4.0, point the
gem to the Mongoid github project.
!
(2) If your using Rails 3, use the public gem
16. All Setup. What Kind of App Should We Make?
Let’s build an app that helps you track
video game achievements that you
completed.
17. What Models Do We Need To Create?
system: name, short_name
game: title, description, released_at,
completed_at
achievement: title, description, points,
multiplayer, completed_at
18. Let’s Build A Model
Use the Rails generator as normal.
19. What The Model Looks Like By Default
Clean model just includes Mongoid::Document to a class.
20. Lets Add Some Fields
In ActiveRecord you use migrations to add and remove
fields from tables.
In Mongoid you declare your fields right in the model class.
36. Lets Review What We Just Did
We created a system called “Xbox One”.
We created a new game via our system document,
automatically creating the relation to system.
We created a new game, then created the relation to system.
We can find documents by providing the document ID.
Created a single and multiplayer achievement for a game.
Took a look and how these are stored in the database.
Updated one of the achievements as completed.
Updated a document with a dynamic field.