Search icon CANCEL
Subscription
0
Cart icon
Your Cart (0 item)
Close icon
You have no products in your basket yet
Arrow left icon
Explore Products
Best Sellers
New Releases
Books
Videos
Audiobooks
Learning Hub
Conferences
Free Learning
Arrow right icon
Learning Mongoid
Learning Mongoid

Learning Mongoid: If you know MongoDB and Ruby, then Mongoid is a very handy tool to have at your disposal. Quickly learn to build Rails applications with the helpful code samples and instructions in this book.

eBook
€8.99 €19.99
Paperback
€24.99
Subscription
Free Trial
Renews at €18.99p/m

What do you get with eBook?

Product feature icon Instant access to your Digital eBook purchase
Product feature icon Download this book in EPUB and PDF formats
Product feature icon Access this title in our online reader with advanced features
Product feature icon DRM FREE - Read whenever, wherever and however you want
OR
Modal Close icon
Payment Processing...
tick Completed

Billing Address

Table of content icon View table of contents Preview book icon Preview Book

Learning Mongoid

Chapter 2. Mongoid Document Model

This is where we prepare to take the deep dive. In this chapter we shall see what we mean by documents and look into some of the internal access and storage. We shall learn about the various data types including some new ones that were added to Mongoid 3.

The Mongoid document


MongoDB stores documents that have fields and maybe other documents embedded in it. The documents are stored in collections. This is analogous to records stored in tables. The difference is that documents, unlike records in a SQL database, need not have the same structure or fields. In fact, as we have already seen in the previous chapter, there is no standard structure for storing documents in MongoDB.

So, do we define a default structure when we use Mongoid? Yes, not only can we define some basic default fields in a Mongoid document but we can also add fields dynamically (we saw this in the previous chapter). So we get the best of both worlds. If you have used ActiveRecord migrations earlier, remember that we don't need them anymore as we define the default fields in the model itself.

Documents are stored in the BSON format by MongoDB. BSON (Binary JSON) is a compact format that uses JSON standards for communication, and a serialized format for storage. This gives us...

Embedded documents


As the name suggests, documents embedded inside other documents are called embedded documents. When the parent document is fetched, it also fetches all the embedded documents. This is similar to the composition concept.

The following code shows how we can define an embedded document:

class Address
  include Mongoid::Document

  field :street, type: String
  field :city, type: String
  field :state, type: String
  field :zipcode, type: String
  field :country, type: String

  embedded_in :author
end

And the following code denotes how we can embed it into another model:

class Author
  include Mongoid::Document

  field :name, type: String
  
  has_many :books
  embeds_one :address
end

Now let's have a quick look at how this information was stored in the database. As it was an embedded document, when we fetched the author object, we also got the author's address.

> db.authors.findOne()
{
  "_id" : ObjectId("5143678345db7ca255000001"),
  "address" : {
    "_id" : ObjectId("514367f445db7ca255000003...

Localization


MongoDB inherently supports localization and in turn, so does Mongoid. MongoDB saves localized information in a hash. We can set a fallback to a default locale by setting an option in the Rails environment, that is, development.rb under config/environments as config.i18n.fallbacks = true. It's pretty straightforward. First let's configure a localized field.

class Book
  include Mongoid::Document

  #...
  field :currency, localize: true
end

Now we can play around with this localized field.

irb> b = Book.first
 => #<Book _id: 515c634c45db7c9233000001, t(title): nil, price: nil, page_count: nil, published_date: 2013-25-06 00:00:00 UTC, is_best_seller: false, awards: ["Booker Prize", "Pulitzer Prize"], reviews: nil, currency: nil, author_id: nil>
irb> I18n.locale
 => :en 
irb> b.currency = "GBP"
 => "GBP" 
irb> b.save
 => true 
irb> I18n.locale = :hi
 => :hi 
irb> b.currency = 'INR'
 => "INR" 
irb> b.save
 => true

Now if we fetch the...

Mass assignment and security


Mass assignment of attributes is a way in which we can assign multiple attributes of an object directly. Typically, the parameter hash params can be used directly to update the object. For example:

# params: { name: "Gautam", age: 35}
User.update_attributes(params)

But, what happens if someone updates information that should not have been part of params? What if someone inserted information such as password: "something" into the params hash? It will update the User object and create havoc.

That's exactly what happened.

Note

Early in 2012, Egor Homakov hacked github.com using this mass assignment Rails vulnerability. He was kind enough not to cause any harm and his intention was only to highlight the Rails' vulnerability of mass assignment.

He posted his own SSH key into the Rails core team user as a mass assignment, and it worked! He had full access to the repository after that. He highlighted that mass assignment is dangerous.

To protect against mass assignment, Rails...

Summary


In this chapter, we saw what Mongoid documents are and their various characteristics. We saw how various attributes such as arrays and hashes are stored. Using Mongoize and custom serialization, we can create new data types in Mongoid and use them in our models. We also saw things such as field aliasing, localization, and even mass assignment.

In the next chapter, we shall dig deep into Origin and see the various ways to persist data. We shall see various validations that are leveraged from ActiveModel, callbacks, and even atomic updates.

Left arrow icon Right arrow icon

Key benefits

  • A step-by-step guide that explains how to use Mongoid through lots of examples and code
  • Monitor and fine-tune the performance of your application
  • Work with the MongoDB aggregation framework

Description

Mongoid helps you to leverage the power of schema-less and efficient document-based design, dynamic queries, and atomic modifier operations. Mongoid eases the work of Ruby developers while they are working on complex frameworks. Starting with why and how you should use Mongoid, this book covers the various components of Mongoid. It then delves deeper into the detail of queries and relations, and you will learn some tips and tricks on improving performance. With this book, you will be able to build robust and large-scale web applications with Mongoid and Rails. Starting with the basics, this book introduces you to components such as moped and origin, and how information is managed, learn about the various datatypes, embedded documents, arrays, and hashes. You will learn how a document is stored and manipulated with callbacks, validations, and even atomic updates. This book will then show you the querying mechanism in detail, right from simple to complex queries, and even explains eager loading, lazy evaluation, and chaining of queries. Finally, this book will explain the importance of performance tuning and how to use the right indexes. It also explains MapReduce and the Aggregation Framework.

Who is this book for?

If you are an application developer who wants to learn how to use Mongoid in a Rails application, this book will be great for you. You are expected to be familiar with MongoDB and Ruby.

What you will learn

  • Learn the syntax of Mongoid 4 with Rails 4
  • Understand moped, the new Ruby driver for MongoDB Learn about document relations in Mongoid
  • Understand origin, the new querying DSL
  • Manage indexes in Mongoid
  • Learn about gems that work with Mongoid
  • Tune and monitor performance

Product Details

Country selected
Publication date, Length, Edition, Language, ISBN-13
Publication date : Dec 12, 2013
Length: 140 pages
Edition : 1st
Language : English
ISBN-13 : 9781782167518
Vendor :
MongoDB
Languages :
Tools :

What do you get with eBook?

Product feature icon Instant access to your Digital eBook purchase
Product feature icon Download this book in EPUB and PDF formats
Product feature icon Access this title in our online reader with advanced features
Product feature icon DRM FREE - Read whenever, wherever and however you want
OR
Modal Close icon
Payment Processing...
tick Completed

Billing Address

Product Details

Publication date : Dec 12, 2013
Length: 140 pages
Edition : 1st
Language : English
ISBN-13 : 9781782167518
Vendor :
MongoDB
Languages :
Tools :

Packt Subscriptions

See our plans and pricing
Modal Close icon
€18.99 billed monthly
Feature tick icon Unlimited access to Packt's library of 7,000+ practical books and videos
Feature tick icon Constantly refreshed with 50+ new titles a month
Feature tick icon Exclusive Early access to books as they're written
Feature tick icon Solve problems while you work with advanced search and reference features
Feature tick icon Offline reading on the mobile app
Feature tick icon Simple pricing, no contract
€189.99 billed annually
Feature tick icon Unlimited access to Packt's library of 7,000+ practical books and videos
Feature tick icon Constantly refreshed with 50+ new titles a month
Feature tick icon Exclusive Early access to books as they're written
Feature tick icon Solve problems while you work with advanced search and reference features
Feature tick icon Offline reading on the mobile app
Feature tick icon Choose a DRM-free eBook or Video every month to keep
Feature tick icon PLUS own as many other DRM-free eBooks or Videos as you like for just €5 each
Feature tick icon Exclusive print discounts
€264.99 billed in 18 months
Feature tick icon Unlimited access to Packt's library of 7,000+ practical books and videos
Feature tick icon Constantly refreshed with 50+ new titles a month
Feature tick icon Exclusive Early access to books as they're written
Feature tick icon Solve problems while you work with advanced search and reference features
Feature tick icon Offline reading on the mobile app
Feature tick icon Choose a DRM-free eBook or Video every month to keep
Feature tick icon PLUS own as many other DRM-free eBooks or Videos as you like for just €5 each
Feature tick icon Exclusive print discounts

Frequently bought together


Stars icon
Total 24.99
Learning Mongoid
€24.99
Total 24.99 Stars icon
Banner background image

Table of Contents

7 Chapters
What's so Awesome about Mongoid? Chevron down icon Chevron up icon
Mongoid Document Model Chevron down icon Chevron up icon
Persisting Documents Chevron down icon Chevron up icon
Mongoid Relations Chevron down icon Chevron up icon
Mongoid Queries Chevron down icon Chevron up icon
Performance Tuning Chevron down icon Chevron up icon
Mongoid Modules Chevron down icon Chevron up icon

Customer reviews

Rating distribution
Full star icon Full star icon Full star icon Full star icon Half star icon 4.5
(2 Ratings)
5 star 50%
4 star 50%
3 star 0%
2 star 0%
1 star 0%
Maciej Mensfeld Feb 24, 2014
Full star icon Full star icon Full star icon Full star icon Full star icon 5
Would I recommend this book? Yes! It can be a solid Mongo and Mongoid starting point for begginers and a “knowledge refresher” for people that use Mongoid longer that few weeks. It is well written and it has a lot of examples. Really a good one about Mongoid.It’s not extremely long - You may consider this an issue, but I’ve found this really helpful. Chapters aren’t long, so getting through them is not painful. Chapters (and the book itself) are really consistent. You won’t get bored reading this one or feel like giving up.This book is mostly about Mongoid. Don't expect Ruby/Rails/Gem management introduction or anything else. Even MongoDb performance/management stuff is not the subject of this study. On the other hand the book is called "Learning Mongoid" so everything extra is just a nice feature :-)As mentioned if it goes about learning Mongoid, this book does what it was meant to do.
Amazon Verified review Amazon
Stefan Frank Feb 19, 2014
Full star icon Full star icon Full star icon Full star icon Empty star icon 4
This is a short, very focused book: It does exactly what it says: It shows you how to use mongoid - not more, but nothing less. When you pick up this short paper, you should already have your mind set on. You should not expect a lengthy introduction to rails or to mongodb, instead it jumps right to the point of connecting a rails-app to a mongoDB using mongoid.Although Mongoid‘s documentation has vastly improved in the last year or so, (which is probably one of the main reasons, barely anyone is using mongo-mapper anymore) – scrapping together decent examples for using it still takes some digging. So the book fills the – albeit small – gap between mongoid’s documentation and the myriad of tiny snippets you can dig up on stack-overflow. It is a small book, but it gives you examples on just about every piece of mongoid’ api along with helpful examples that show you how to use these api’s.The writing is clear and to the point, with helpful callouts pointing out common pitfalls&things you should look out for when using mongoid. Unlike other books of this nature, the examples do not lead to a complete application: instead, the examples are focused on demonstrating the specific part of the api and do a good job of showing you how to apply concept to a real-world(-ish) example.The bottom line:I liked it, that the book is short: it touches on every part of the api, giving you a good overview of mongoid: It is often very helpful when you already know that things like the paranoia-plugin exist and what their purpose is – when it comes to actually using is, you can still find the specifics online, now that you know what you are looking for.That being said, the shortness comes at a price:some topics come in a little too short:- There is probably more about scaling a mongoDB than just getting the formatting of your data-disk right(although it’s a start) – but then again, this is no book about mongodb. But maybe if you touch on the topic this light, you can leave it out altogether just as good…- the book shows every piece of the api, but it doesn’t help you much with choosing which pattern to use when. Mapping your domain onto a mongoid/mongodb model is not entirely straightforward and there are many ways you can model the same domain with different approaches – and this can be a bit challenging at first, especially when you come from a RDBMS-background. But again: This is not about modeling mongoDB-databases, this book is about mongoid-and-mongoid-only.-some examples are very terse and you can probably argue, that you can find these kind of examples on stack-overflow and combine it with the mongoid-docs (which are not soo bad to begin with): But having all this stuff together in one place is certainly helpful when you start.All in all, I liked the book: Even if you’ve been doing mongoid for some time, you will probably find the one or other thing in it you didn’t know yet about mongoid. And if you’re just starting with mongoid and you’re looking for a decent introduction to the whole api, this is certainly the book to go for.
Amazon Verified review Amazon
Get free access to Packt library with over 7500+ books and video courses for 7 days!
Start Free Trial

FAQs

How do I buy and download an eBook? Chevron down icon Chevron up icon

Where there is an eBook version of a title available, you can buy it from the book details for that title. Add either the standalone eBook or the eBook and print book bundle to your shopping cart. Your eBook will show in your cart as a product on its own. After completing checkout and payment in the normal way, you will receive your receipt on the screen containing a link to a personalised PDF download file. This link will remain active for 30 days. You can download backup copies of the file by logging in to your account at any time.

If you already have Adobe reader installed, then clicking on the link will download and open the PDF file directly. If you don't, then save the PDF file on your machine and download the Reader to view it.

Please Note: Packt eBooks are non-returnable and non-refundable.

Packt eBook and Licensing When you buy an eBook from Packt Publishing, completing your purchase means you accept the terms of our licence agreement. Please read the full text of the agreement. In it we have tried to balance the need for the ebook to be usable for you the reader with our needs to protect the rights of us as Publishers and of our authors. In summary, the agreement says:

  • You may make copies of your eBook for your own use onto any machine
  • You may not pass copies of the eBook on to anyone else
How can I make a purchase on your website? Chevron down icon Chevron up icon

If you want to purchase a video course, eBook or Bundle (Print+eBook) please follow below steps:

  1. Register on our website using your email address and the password.
  2. Search for the title by name or ISBN using the search option.
  3. Select the title you want to purchase.
  4. Choose the format you wish to purchase the title in; if you order the Print Book, you get a free eBook copy of the same title. 
  5. Proceed with the checkout process (payment to be made using Credit Card, Debit Cart, or PayPal)
Where can I access support around an eBook? Chevron down icon Chevron up icon
  • If you experience a problem with using or installing Adobe Reader, the contact Adobe directly.
  • To view the errata for the book, see www.packtpub.com/support and view the pages for the title you have.
  • To view your account details or to download a new copy of the book go to www.packtpub.com/account
  • To contact us directly if a problem is not resolved, use www.packtpub.com/contact-us
What eBook formats do Packt support? Chevron down icon Chevron up icon

Our eBooks are currently available in a variety of formats such as PDF and ePubs. In the future, this may well change with trends and development in technology, but please note that our PDFs are not Adobe eBook Reader format, which has greater restrictions on security.

You will need to use Adobe Reader v9 or later in order to read Packt's PDF eBooks.

What are the benefits of eBooks? Chevron down icon Chevron up icon
  • You can get the information you need immediately
  • You can easily take them with you on a laptop
  • You can download them an unlimited number of times
  • You can print them out
  • They are copy-paste enabled
  • They are searchable
  • There is no password protection
  • They are lower price than print
  • They save resources and space
What is an eBook? Chevron down icon Chevron up icon

Packt eBooks are a complete electronic version of the print edition, available in PDF and ePub formats. Every piece of content down to the page numbering is the same. Because we save the costs of printing and shipping the book to you, we are able to offer eBooks at a lower cost than print editions.

When you have purchased an eBook, simply login to your account and click on the link in Your Download Area. We recommend you saving the file to your hard drive before opening it.

For optimal viewing of our eBooks, we recommend you download and install the free Adobe Reader version 9.