Nighttime Pachinko Marathon
Have ideas to improve npm?Join in the discussion! »


2.0.1 • Public • Published


Migrations for MongoDB

build status npm version mit license we're hiring

node-migrate-mongo enables data migrations in your existing project. The state of your migrations is stored in the database specified in the mongo property of your By default, this collection is called migration_versions. See the Usage section (and let's be honest: the code) for more information.

Despite the name, this module does not borrow from TJ's node-migrate, though it follows very similar conventions.


In your existing project where you'd like to have migrations:

npm install --save node-migrate-mongo
cat << EOF- >
  module.exports =
    mongo: 'mongodb://localhost/your_db'
migrate generate --name my_first_migration
# edit it
migrate all


JavaScript variants

Your Migratefile file can be any JavaScript variant recognized by interpret. Just make sure to use the right file extension. For CoffeeScript, use the .coffee extension. For Babel, use the .babel.js extension.


  • beforeTest -- An async function called before running a migration test. By default sets NODE_ENV=test.
  • before -- An async function called before running a command. Useful for connecting your app to its database.
  • after -- An async function called after running a command.
  • afterTest -- An async function called after running a migration test.
  • mongo -- A string or function that returns a mongo connection string.
  • model -- A reference to your custom MigrationVersion model.
  • path -- The place to store your migration files. Defaults to migrations.
  • ext -- The extension for your migration files. Defaults to coffee.
  • template -- The template used when generating migrations.
  • context -- Values provided as part of this within all migration functions (up, down, and test)
  • transform -- A function that allows you to transform migrations before they are run.

before/after callbacks are called in this order: [ beforeTest, before, after, afterTest ]

Migrations that take promises

One way to accomplish this is with a Migratefile that looks like this, which will allow you to define migrations with upPromise, downPromise, and testPromise functions:

var Promise = require 'bluebird';

module.exports = {
  transform: function(migration) {
    ['up', 'down', 'test'].forEach(function(fn) {
      var promiseVersion = migration[fn + "Promise"];
      if (promiseVersion) {
        migration[fn] = function(done) {
          return Promise.resolve(promiseVersion()).nodeify(done);
    return migration;


Please follow our Code of Conduct when contributing to this project.

$ git clone && cd node-migrate-mongo
$ npm install
$ npm test

Module scaffold generated by generator-goodeggs-npm.


npm i node-migrate-mongo

DownloadsWeekly Downloads






Unpacked Size

31.6 kB

Total Files


Last publish


  • avatar
  • avatar
  • avatar