hamdiBouhani / mongodb-data-migrate

Geek Repo:Geek Repo

Github PK Tool:Github PK Tool

mongodb-data-migrate

Versioned migrations for MongoDB

This package allows to perform versioned migrations on your MongoDB using go.mongodb.org/mongo-driver. It depends only on standard library and MongoDB Go Driver. Inspired by mongo-migrate.

Usage

Migrations in files.

package scripts

import (
	"context"
	"mongodb-data-migrate/internal"
	"mongodb-data-migrate/migrate"

	"go.mongodb.org/mongo-driver/bson/primitive"
	"go.mongodb.org/mongo-driver/mongo"
)

func init() {
	migrate.Register(func(db *mongo.Client) error {
		document := struct {
			ID       string `bson:"_id,omitempty"`
			FullName string `bson:"full_name,omitempty"`
		}{
			ID:       primitive.NewObjectID().Hex(),
			FullName: "test",
		}
		_collection := db.Database(internal.DB).Collection("users")
		_, err := _collection.InsertOne(context.Background(), document)
		if err != nil {
			return err
		}
		return nil
	}, func(db *mongo.Client) error {
		return nil
	})
}
  • Import it in your application.
import (
    ...
    migrate "mongodb-data-migrate/migrate"
    _ "path/to/migrations_package" // database migrations
    ...
)
  • Run migrations.
go run example/main.go migrate --new --desc="create_user"
go run example/main.go migrate --up
go run example/main.go migrate --down

About

License:MIT License


Languages

Language:Go 99.9%Language:Shell 0.1%