A command-line tool for running and managing MongoDB migrations.
To install Db-Mongo-Migration, run the following command:
npm i db-mongo-migration
__ __ __ __ _ _
| \/ | ___ _ __ __ _ ___ | \/ (_) __ _ _ __ __ _| |_ ___
| |\/| |/ _ \| '_ \ / _` |/ _ \ _____| |\/| | |/ _` | '__/ _` | __/ _ \
| | | | (_) | | | | (_| | (_) |_____| | | | | (_| | | | (_| | || __/
|_| |_|\___/|_| |_|\__, |\___/ |_| |_|_|\__, |_| \__,_|\__\___|
|___/ |___/
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
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
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.
-
-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 |
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.
To run your migrations, run the following command:
npx mongo-migrate up
This will run all pending migrations.
-
-f, -file <filename>
: Run migration for a specific file. -
-d, --dry-run
: Run migration with a dry run.
To rollback your migrations, run the following command:
npx mongo-migrate down
This will rollback the last batch of migrations.
-
-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.
This project is licensed under the MIT License - see the LICENSE file for details.