node package manager


MongoDB storage for BackboneORM

Build Status


BackboneMongo provides MongoDB storage for BackboneORM.

Because BackboneORM's query language is based on MongoDB's query language, many queries just work! With a twist...Backbone.ORM provides cross-collection relationships and embedded data for MongoDB.

In addition, BackboneMongo using CouchDB-style '_rev' versioning to ensure coherency of data.

Examples (CoffeeScript)

class Change extends Backbone.Model
  model_name: 'Change'
  sync: require('backbone-orm').sync(Change)
class Task extends Backbone.Model
  urlRoot: 'mongodb://localhost:27017/tasks'
    project: -> ['belongsTo'Project]
    changes: -> ['hasMany'Changeembed: true]
  sync: require('backbone-mongo').sync(Task)
class Project extends Backbone.Model
  urlRoot: 'mongodb://localhost:27017/projects'
    tasks: -> ['hasMany'Task]
    changes: -> ['hasMany'Changeembed: true]
  sync: require('backbone-mongo').sync(Project)

Examples (JavaScript)

var Change = Backbone.Model.extend({
  model_name: 'Change',
Task.prototype.sync = require('backbone-orm').sync(Change);
var Task = Backbone.Model.extend({
  urlRoot: 'mongodb://localhost:27017/tasks',
  schema: {
    project: function() { return ['belongsTo', Project]; }
    changes: function() { return ['hasMany', Change, {embed: true}]; }
Task.prototype.sync = require('backbone-mongo').sync(Task);
var Project = Backbone.Model.extend({
  urlRoot: 'mongodb://localhost:27017/projects',
  schema: {
    tasks: function() { return ['hasMany', Task]; }
    changes: function() { return ['hasMany', Change, {embed: true}]; }
Project.prototype.sync = require('backbone-mongo').sync(Project);

Please checkout the website for installation instructions, examples, documentation, and community!

For Contributors

To build the library for Node.js:

$ gulp build

Please run tests before submitting a pull request:

$ gulp test --quick

and eventually all tests:

$ npm test