TinyMongo

Simple MongoDB wrapper

Notice

This gem is not yet ready for production use.

Install

gem install tinymongo

Rails Setup (Rails 3)

To create TinyMongo config file (config/tinymongo.yml) and initializer file (config/initializers/tinymongo.rb), do the following:

rails generate tinymongo

Connecting To MongoDB directly (for non-Rails projects)

TinyMongo.configure({:host => 'localhost', :database => 'db_name'})
TinyMongo.connect

Example

class Person < TinyMongo::Model
mongo_collection :people          # optional if using Rails
mongo_key :name
mongo_key :age, :default => 0
mongo_key :children, :default => []

def make_child
  child = Person.create(:name => 'Baby')
  push({:children => child})      # push child into children array
end

def grow_up
  inc({:age => 1})                # increments age by 1
end

def set_stuff(n,a,c)
  # don't forget to put self
  self.name = n
  self.age = a
  self.children = c
  save
end
end

Person.drop                         # empty person collection

p = Person.create(:name => 'John', :age => 20)
p.make_child
p.grow_up

Person.find.each do |person|
puts person.name
end

Person.find_one(:name => 'John').age

Person.create(:name => 'Jim')
Person.create(:name => 'Pam')

Person.find.to_a.map { |person| person.name }

Person.find.has_next?

Person.find.sort({:name => 1}).skip(2).limit(1).next!.name 

Person.find({:name => 'John'}, {:age => 1}) # select only age field

Person.find.count # count ignores skip and limit
Person.find.skip(1).size # size is affected by skip and limit

Person.distinct(:name)

Person.ensure_index({:name => 1})
Person.drop_index({:name => 1})

Copyright (c) 2010 Peter Jihoon Kim. See LICENSE for details.