NoSQL Zone is brought to you in partnership with:

Steve is the Chief Solutions Architect at 10gen where he is responsible for the user experience of MongoDB including drivers, integrations, web & docs and evangelism. Steve previously has held executive roles at OpenSky, Portero, Takkle. Steve blogs, authors books, teaches, speaks, writes code and maintains a popular Vim distribution. You can find out more at Steve is a DZone MVB and is not an employee of DZone and has posted 25 posts at DZone. You can read more from them at their website. View Full User Profile

Building Your First MongoDB App in Ruby: An OSCON 2012 Tutorial

  • submit to reddit

This is a 3 hour tutorial I wrote for and gave at OSCON 2012.

Here is the summary:

This tutorial will introduce the features of MongoDB by building a simple location-based application using MongoDB. The tutorial will cover the basics of MongoDB’s document model, query language, map-reduce framework and deployment architecture.

The tutorial will be divided into 5 sections:

  • Data modeling with MongoDB: documents, collections and databases
  • Querying your data: simple queries, geospatial queries, and text-searching
  • Writes and updates: using MongoDB’s atomic update modifiers
  • Trending and analytics: Using mapreduce and MongoDB’s aggregation framework
  • Deploying the sample application

Besides the knowledge to start building their own applications with MongoDB, attendees will finish the session with a working application they use to check into locations around Portland from any HTML5 enabled phone!

Each attendee should have a running version of MongoDB. Preferably the latest unstable release 2.1.x, but any install after 2.0 should be fine. You can dowload MongoDB at

Instructions for installing MongoDB are at

Additionally we will be building an app in Ruby. Ruby 1.9.3+ is required for this. The current latest version of ruby is 1.9.3-p194.

We will be using the following GEMs and they MUST BE installed ahead of time so you can be ahead of the game and safe in the event that the Internet isn’t accommodating.

  • bson (1.6.4)
  • bson_ext (1.6.4)
  • haml (3.1.4)
  • mongo (1.6.4)
  • rack (1.4.1)
  • rack-protection (1.2.0)
  • rack shotgun (0.9)
  • sinatra (1.3.2)
  • tilt (1.3.3)

Prior ruby experience isn’t required for this. We will NOT be using rails for this app.


Published at DZone with permission of Steve Francia, author and DZone MVB. (source)

(Note: Opinions expressed in this article and its replies are the opinions of their respective authors and not those of DZone, Inc.)