Show Navigation


Mongogee is a Grails plugin for MongoDB data migration management

Owner: ikalizpet | 0.9.4 | Jan 4, 2018 | Package | Issues | Source | Documentation | License: Apache-2.0

dependencies {
    compile 'org.grails.plugins:mongogee:0.9.4'



MongoDB data migration Grails Plugin.

TravisCI Build Status


Mongogee Grails plugin is a simple, secure service for mongodb data migration management. This plugin is inspired by Mongobee ( MongoDB data migration toolset.

All the credits of the annotation based migration change management logic go to the Mongobee authors.

This repository contains source code of Mongogee, and a testing sample host Grails application.


In host Grails application's build.gradle file:

plugins {
	compile ':mongogee:$version'


Hosting Grails application version 3.0+.


In host Grails application grails-app/conf/application.yml

    changeEnabled: true 		          # default is true
    continueWithError: false 	          # default is false
    changeLogsScanPackage: 'some.package' # required, no default value
    lockingRetryEnabled: false            # default to true
    lockingRetryIntervalMillis: 3000      # default to 5s
    lockingRetryMax: 60                   # default to 120, aka 10min


Adopting and extending Mongobee ( annotations. There are two level of migration change units: change-logs (class level) and change-sets (method level). Change-logs can be written in either Java or Groovy. Some groovy examples are below:

@ChangeLog(order = '001')
	class MongogeeTestChangeLog {
	    @ChangeSet(author = "testuserA", id = "test1", order = "01")
	    void testChangeSet1() {
	        System.out.println("invoked 1")
	    @ChangeSet(author = "testuserB", id = "test2", order = "02")
	    void testChangeSet2(DB db) {
	        System.out.println("invoked 2 with mongodb DB argument: $db")
	    @ChangeSet(author = 'testuser', id = 'test3', order = '03', runAlways = true)
	    void testChangeSetRunAlways() {
	        println 'invoke runAlways'
	    @ChangeSet(author = 'testuser', id = 'test4', order = '04')
	    void testChangeSetEnvDevelopment() {
	        println 'invoke test for env development'
	    @ChangeSet(author = 'testuser', id = 'test5', order = '05')
	    void testChangeSetEnvTest() {
	        println 'invoke test for env test'


Version 0.9 and up: The manual line adding below is no longer needed. Mongogee migration service will be executed automatically if changeEnabled is set to true (which is also default).

Version 0.8 and below: Add following to init/BootStrap.groovy

class BootStrap {

    MongogeeService mongogeeService

    def init = { servletContext ->
        // ...



    // ...


v 0.9.1

  • issue-11: change entry log can intercept and save exception error information during change set invocation, and then bubble up back to main execution flow

v 0.9

  • issue-9: simplify hosting app to save the manual line adding in host app bootstrap.groovy

v 0.8

  • issue-4: add run-count support in changeEntry persistence for those repeatable changeSets

v 0.7 and under

  • issue-3: add loop/lock-retry ability to application start-up


Bin Le ([email protected])


Apache License Version 2.0. (