Go言語(Golang)でMongoDBと接続する方法

GolangGo,MongoDB

MongoDBのドライバは最近変更されていますので、その点を中心にお話しします。

mgoは既にメンテナンス停止。

これまでのGo言語でのmongoDBドライバとはmgoでした。しかし、すでにgithub(https://github.com/go-mgo/mgo)を覗いてもわかる通り、メンテナンスが停止しています。

<旧ドライバ(mgo)インストール(参考まで)>

go get gopkg.in/mgo.v2
go get gopkg.in/mgo.v2/bson

MongoDB公式ドライバを使用しよう。

今後は以下のMongoDB公式ドライバを使用しましょう。

ソースはコチラ。

MongoDBドライバインストール方法

公式ドキュメント(https://docs.mongodb.com/drivers/go)に従ってインストールすることをお勧めします。2021年現在は以下の通りgo getすることで問題なくインストールできます。

go get go.mongodb.org/mongo-driver/mongo

MongoDB公式ドライバの使い方も少しづつ変わっていますので注意が必要です。

MongoDBに接続する

以下はMongoDBに接続する簡単な例です。

package main

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

type demo struct{
	ID 		primitive.ObjectID		`bson:"_id, omitempty"`
	AuthorID 	string				`bson:"author_id"`
	Content 	string				`bson:"content"`
	Title 		string				`bson:"title"`
}

func main() {
//Connect to MongoDB
	client, err := mongo.NewClient(options.Client().ApplyURI(<MongoDB address>))
	if err != nil { log.Fatal(err) }
	ctx, cancel := context.WithTimeout(context.Background(), 20*time.Second)
	defer cancel()
	err = client.Connect(ctx)
	if err != nil { log.Fatal(err) }

	collection = client.Database("grpc").Collection("test")
:
:
:
// Close connection
	client.Disconnect(ctx)
}

10行目 – 最近の変更点としてObjectID typeの参照先がprimitiveパッケージになっています。ここでは例としてdemo structを書いてみましたが、このようにprimitive.ObjectIDで _idを格納するようにします。

18行目 – <MongoDB address>の個所に自身のDBアドレスを記載してください。