🐕
golang-migrateでMongoDBのマイグレーション
概要
サーバサイドの開発を行うとき、変更管理の為にDBのマイグレーションはできれば行ったほうが良いです。Golangでもいくつかマイグレーションツールがあるのですが、MongoDBに対応しているのはパッと探したところgolang-migrateしかありませんでした。
というわけで、今回はgolang-migrateを使って、MongoDBのマイグレーションを行う方法について書いてみます。
golang-migrateについて
golang-migrateはCLIのツールとして実行する方法と、ライブラリをimportして実行する方法があるようです。今回はCLIで実行する方法で紹介します。MySQLの例になりますが、実行方法としてはgolang-migrateにてDBのマイグレーションを管理するの記事が参考になると思います。
MongoDBで用意するマイグレーションファイル
こちらに、いくつかマイグレーションファイルのサンプルがあります。用意するのはjsonファイルで、ドキュメントにあるコマンド内容に沿ってファイルを作成します。インデックスの設定とドキュメントのインサートを、例として下記に記します。
001_create_indexes.up.json
[{
"createIndexes": "sample",
"indexes": [
{
"key": {
"column1": 1
},
"name": "column1_index",
"background": true
},
{
"key": {
"column2": 1
},
"name": "column2_index",
"background": true
},
]
}]
002_insert.up.json
[{
"insert": "sample",
"documents": [
{
"column1": "test1",
"column2": "test2"
}
]
}]
マイグレーション実行
CLIでの実行方法に関してはRDBと変わりません。接続文字列とマイグレーションファイルのパスを指定して、コマンドで実行します。
migrate -database "mongodb://localhost:27017/sample_db" -path "./migrate/" up 2
Discussion