MongoModel alternatives and similar gems
Based on the "ORM/ODM" category.
Alternatively, view MongoModel alternatives based on common mentions on social networks and blogs.
-
DataMapper
DISCONTINUED. ORM which works well with legacy databases. Last release (1.2.0) was on 13 October 2011.
CodeRabbit: AI Code Reviews for Developers

* Code Quality Rankings and insights are calculated and provided by Lumnify.
They vary from L1 to L5 with "L5" being the highest.
Do you think we are missing an alternative of MongoModel or a related project?
README
MongoModel
MongoModel is a Ruby ORM for interfacing with MongoDB databases.
Installation
MongoModel is distributed as a gem. Install with:
gem install mongomodel
For performance, you should probably also install the BSON C extensions:
gem install bson_ext
Using with Rails
Add MongoModel to your Gemfile (and run bundle install
):
gem 'mongomodel'
Create the configuration file config/mongomodel.yml
:
rails generate mongo_model:config DATABASENAME
Generating a model/document:
rails generate model Article title:string body:string published_at:time approved:boolean
Generating an embedded document:
rails generate model Chapter title:string body:string -E
Sample Model
class Article < MongoModel::Document
property :title, String, :default => 'Untitled'
property :body, String
property :published_at, Time, :protected => true
property :approved, Boolean, :default => false, :protected => true
timestamps!
validates_presence_of :title, :body
belongs_to :author, :class => User
scope :published, where(:published_at.ne => nil)
end
Configuration
MongoModel can be configured similarly to ActiveRecord by creating/editing config/mongomodel.yml
. The most basic configuration might look like:
development:
database: mymongodbname
host: localhost
port: 27017
The config file also supports specifying the username, password, pool_size, password and replicas. Running rails generate mongo_model:config DATABASENAME
will generate a basic config file for you.
Using Replica Sets
When working with replica sets, replace the host/port configuration with an array of replicas (host:port
):
production:
database: database_name
replicas:
- some.host.com:27017
- another.host.com:27017
username: username
password: password