🐕

golang-migrateでMongoDBのマイグレーション

2020/12/15に公開

概要

サーバサイドの開発を行うとき、変更管理の為に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