Simple MongoDB wrapper
Ruby
Latest commit 65c02e8 Sep 9, 2010 @petejkim fixed deprecation

README.rdoc

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

Copyright © 2010 Peter Jihoon Kim. See LICENSE for details.