- Introduction
- Release Notes
- Implemented Changes
- Connection String Formats
- Getting Started
- Running tests
- Integration
- Contributing
- License
This is a Liquibase extension for MongoDB support.
It resulted as an alternative to existing MongoDB evolution tools.
Majority of them are basically wrappers over db.eval
shell method that is deprecated staring from MongoDB 4.2.
In order to call specific mongo-java-driver
specific methods,
Liquibase turned to be the most feasible tool to extend as it allows to define change sets to fit driver methods arguments.
- Support for Liquibase 4.20.0
- Updated code to work with core 4.4.0 PR #147
- Bump mockito-core from 3.10.0 to 3.11.0 PR#151
- Bump mockito-junit-jupiter from 3.10.0 to 3.11.0 PR#152
- Bump snakeyaml from 1.28 to 1.29 PR#153
- Bump assertj-core from 3.19.0 to 3.20.0PR#157
- Upgrade Mongo Java Driver from 4.2.1 to 4.2.2
- Fixed Issue-111: Is adminCommand really connected to the admin DB?
- Support for Liquibase 4.3.1
- This an important release build with 4.2.0 mongo-driver-sync and is compatible with mongo-driver 3.x.x if provided
- Fixed Issue-90: Convert all statements to runCommand so it is compatible with majority JavaDriver versions
- Fixed Issue-80: Move from deprecated mongo-java-driver
- Fixed Issue-71: Support mongodb-driver-sync v4.x
- Fixed Issue-64:Support for DNS Seed List Connection Format or Atlas Cluster
- Fixed Issue-69: Does it support preconditions
- Fixed Issue-70: Is there a way to tag the current database state?
- Added DocumentExistsPrecondition, ExpectedDocumentCountPrecondition
- Fixed Issue-74: createIndex with TTL (expireAfterSeconds) is ignored and normal index created
- Fixed Issue-79: CreateCollection silently drops supported options
- Support for Liquibase 4.2.2
- Support for Liquibase 4.2.1
- Fixed Rollback doesn't work with liquibase-mongodb-4.0.0.2 extension
- Added dropCollection and dropIndex Changes
- Added NoSql JSON Parser which can pass raw JSON for a property like this:
{
"options" :
{
"$rawJson" : { ... }
}
}
For the command line is required to copy to [liquibase]/lib
libraries : jackson-annotations-2.11.3.jar, jackson-core-2.11.3.jar, jackson-databind-2.11.3.jar
- New properties added
# If disabled can be used on API which do not support validators (Azure Cosmos DB with Mongo API, Amazon DocumentDB)
liquibase.mongodb.supportsValidator=true
# If enabled will adjust indexes and validators for Liquibase tracking tables LOCK and CHANGELOG. Can be disabled if sure Liquibase not updated.
liquibase.mongodb.adjustTrackingTablesOnStartup=true
- Overridden Liquibase table names removed. Now will be used the default ones in Liquibase. If previous releases used then table names should be explicitly passed as parameters.
Currently, by default as Liquibase default :
DATABASECHANGELOGLOCK, DATABASECHANGELOG
Previous releases used by default :databaseChangeLogLock, databaseChangeLog
- Support for Liquibase 4.1.1
- Support for Liquibase 4.1.0
- Works with Liquibase v4.0.0
- Support for Liquibase 3.10
- First release
A couple of Changes were implemented until identified that majority of the operations can be achieved using db.runCommand()
and db.adminCommand()
- createCollection - Creates a collection with validator create
- dropCollection - Removes a collection or view from the database drop
- createIndex - Creates an index for a collection createIndexes
- dropIndex - Drops index for a collection by keys dropIndexes
- insertMany - Inserts multiple documents into a collection insert
- insertOne - Inserts a Single Document into a collection insert
- runCommand - Provides a helper to run specified database commands. This is the preferred method to issue database commands, as it provides a consistent interface between the shell and drivers
- adminCommand - Provides a helper to run specified database commands against the admin database
mongodb://[username:password@]host1[:port1][,...hostN[:portN]][/[defaultauthdb][?options]] mongodb://mongodb1.example.com:27317,mongodb2.example.com:27017/?replicaSet=mySet&authSource=authDB
mongodb+srv://[username:password@]host[/[database][?options]] mongodb+srv://server.example.com/ mongodb+srv://:@cluster0.example.com/testdb?authSource=$external&authMechanism=MONGODB-AWS
These instructions will get you a copy of the project up and running on your local machine for development and testing purposes.
- Dependencies that have to be available in classpath if run via Liquibase CLI
mongodb-driver-sync:4.2.0
snakeyaml:1.27
jackson-annotations:2.11.3
jackson-core:2.11.3
jackson-databind:2.11.3
- Clone the project
git clone https://github.com/liquibase/liquibase-mongodb
Connection url can be adjusted here: url
Connection String Format
Run Integration tests by enabling run-its
profile
mvn clean install -Prun-its
- Produce test containing jar
mvn clean install -Ptest-jar
- Go to test-project
cd test-project
- Run backward compatibility test with provided 3x driver
mvn clean install -Prun-its,mongo-3x
Quick start Application for NoSql liquibase extensions
<dependency>
<groupId>org.liquibase.ext</groupId>
<artifactId>liquibase-mongodb</artifactId>
<version>${liquibase-mongodb.version}</version>
</dependency>
public class Application {
public static void main(String[] args) {
MongoLiquibaseDatabase database = (MongoLiquibaseDatabase) DatabaseFactory.getInstance().openDatabase(url, null, null, null, null);
Liquibase liquibase = new Liquibase("liquibase/ext/changelog.generic.test.xml", new ClassLoaderResourceAccessor(), database);
liquibase.update("");
}
}
Please read CONTRIBUTING.md for details on our code of conduct, and the process for submitting pull requests to us.
This project is licensed under the Apache License Version 2.0 - see the LICENSE.md file for details