Skip to main content

latest

Migration tool for MongoDB

This package works with Node.js, DenoIt is unknown whether this package works with Cloudflare Workers, Bun, Browsers
It is unknown whether this package works with Cloudflare Workers
This package works with Node.js
This package works with Deno
It is unknown whether this package works with Bun
It is unknown whether this package works with Browsers
JSR Score
94%
Published
11 months ago (1.0.2)

New Ticket: Report package

Please provide a reason for reporting this package. We will review your report and take appropriate action.

Please review the JSR usage policy before submitting a report.

Mongo-Migration

Coverage Status NPM Downloads Known Vulnerabilities

BuyMeACoffee

A command-line tool for running and managing MongoDB migrations.

Installation

To install Mongo-Migration, run the following command:

npm i @mongo/migration

CLI Usage

  __  __                               __  __ _                 _
 |  \/  | ___  _ __   __ _  ___       |  \/  (_) __ _ _ __ __ _| |_ ___
 | |\/| |/ _ \| '_ \ / _` |/ _ \ _____| |\/| | |/ _` | '__/ _` | __/ _ \
 | |  | | (_) | | | | (_| | (_) |_____| |  | | | (_| | | | (_| | ||  __/
 |_|  |_|\___/|_| |_|\__, |\___/      |_|  |_|_|\__, |_|  \__,_|\__\___|
                     |___/                      |___/
Usage: mongo-migration [options] [command]

Options:
  -V, --version   output the version number
  -h, --help      display help for command

Commands:
  init            Initialize migration config
  create [name]   Create a migration
  status          Get migration status
  up [options]    Run migration
  down [options]  Rollback migrations
  help [command]  display help for command

Basic Usage

Initialize Migration Config

To initialize the migration config, run the following command:

npx mongo-migrate init

This will create a migration-config.yaml file in the current directory.

db-connection:
  url: ${URL}
  databaseName: ${DATABASE_NAME}
  options:
    useNewUrlParser: true
    useUnifiedTopology: true

migrationsDir: migrations
changelogCollectionName: migrations
projectName: YOUR-PROJECT-NAME
useDefaultTransaction: true

You can use .env to auto populate the environment variables

Create a Migration

To create a new migration, run the following command:

npx mongo-migrate create [name]

Replace [name] with the name of your migration. This will create a new migration file in the migrations directory.

Options

  • -n, -native: Create migration file for native Mongo DB operation (WIP).

Without option -n, it will create a file with following content:

Without option -n With native support (-n) - WIP
  import { IMigration, DB } from "db-mongo-migration"

  class Migration implements IMigration {
    /**
    * Run the migrations.
    */
    async up(db: DB) {
      // YOUR CODE HERE
    }

    /**
    * Reverse the migrations.
    */
    async down(db: DB) {
      // YOUR CODE HERE
    }
  }

  export default Migration;
import { INativeMigration, DbSessionHelper, MongoClient } from "db-mongo-migration"
import { Db } from 'mongodb';

class NativeMigration implements INativeMigration {
  /**
   * Run the migrations.
   */
  async up(db: Db, client: MongoClient) {
    return await handleDbTransaction(client, async session => {
        // YOUR CODE HERE
      });
  }

  /**
   * Reverse the migrations.
   */
  async down(db: Db, client: MongoClient) {
    // YOUR CODE HERE
  }
}

export default NativeMigration;
-> System handles the entire Transaction Session -> Should pass client.globalSession to give system the control to handle the transaction session

Get Migration Status

To get the status of your migrations, run the following command:

npx mongo-migrate status

This will display a table showing the status of each migration.

Run Migrations

To run your migrations, run the following command:

npx mongo-migrate up

This will run all pending migrations.

Options

  • -f, -file <filename>: Run migration for a specific file.
  • -d, --dry-run: Run migration with a dry run.

Rollback Migrations

To rollback your migrations, run the following command:

npx mongo-migrate down

This will rollback the last batch of migrations.

Options

  • -f, -file <filename>: Run rollback for a specific file.
  • -r, -reset: Reset the migration.
  • -d, --dry-run: Run migration rollback with a dry run.
  • -b, --batch <number>: Number of batch to rollback.
  • -s, --steps <number>: Number of steps to rollback.

License

This project is licensed under the MIT License - see the LICENSE file for details.

Add Package

deno add jsr:@mongo/migration

Import symbol

import * as migration from "@mongo/migration";

---- OR ----

Import directly with a jsr specifier

import * as migration from "jsr:@mongo/migration";

Add Package

npx jsr add @mongo/migration

Import symbol

import * as migration from "@mongo/migration";

Add Package

yarn dlx jsr add @mongo/migration

Import symbol

import * as migration from "@mongo/migration";

Add Package

pnpm dlx jsr add @mongo/migration

Import symbol

import * as migration from "@mongo/migration";

Add Package

bunx jsr add @mongo/migration

Import symbol

import * as migration from "@mongo/migration";