Docs Menu
Docs Home
/ / /
Go

Go Driver クイック スタート

項目一覧

  • プロジェクトを設定する
  • Go Modを使用してプロジェクトを初期化する
  • MongoDB を依存関係として追加する
  • その他の依存関係を追加する
  • MongoDB クラスターを作成する
  • Atlasで無料階層クラスターをセットアップする
  • アプリケーションから MongoDB クラスターをクエリする
  • 次のステップ

このガイドでは、Go ドライバーを使用して MongoDB Atlas クラスターに接続するアプリケーションを作成する方法について説明します。別のドライバーまたはプログラミング言語を使用して MongoDB に接続する場合は、公式 MongoDB ドライバーのリスト を参照してください。

Go ドライバーを使用すると、Go アプリケーションから MongoDB クラスターに接続して通信できます。

MongoDB Atlas は、MongoDB クラスターでデータをホストする完全管理クラウドデータベース サービスです。このガイドでは、独自の無料クラスター(クレジットカードは不要)を開始する方法を説明します。

Go アプリケーションを MongoDB Atlas クラスターに接続するには、以下の手順に従います。

新しいディレクトリを作成し、go mod を使用してプロジェクトを初期化します。

mkdir go-quickstart
cd go-quickstart
go mod init go-quickstart

Go ドライバーを依存関係として追加するには、 go get を使用します。

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

go get を使用して、追加の依存関係を追加します。このクイックスタートでは、godotenv パッケージを使用して環境変数から MongoDB 文字列を読み取り、ソースコード内に認証情報が埋め込まれないようにしています。

go get github.com/joho/godotenv

Go プロジェクトの依存関係を設定したら、データを保存および管理できる MongoDB クラスターを作成します。Atlas スタートガイドを完了して、新しい Atlas アカウント、無料階層の MongoDB クラスターを設定し、データセットをロードして、データをやり取りします。

Atlas ガイドの手順を完了すると、Atlas に新しい MongoDB クラスターがデプロイされ、新しいデータベース ユーザーが作成され、サンプル データセットがクラスターにロードされます。

この手順では、Go ドライバーを使用して MongoDB クラスターに接続し、サンプル データに対してクエリを実行するアプリケーションを作成して実行します。

MongoDB クラスターに接続する場所と方法に関する指示を、接続文字列と呼ばれる文字列でドライバーに渡します。この文字列には、クラスターのホスト名または IP アドレスとポート、認証メカニズム、ユーザー認証情報(該当する場合)、およびその他の接続オプションに関する情報が含まれます。

前のステップで作成したクラスターとユーザーの接続文字列を取得するには、Atlas アカウントにログインして「Database」セクションに移動し、次に示すように接続するクラスターの [Connect] ボタンをクリックします。

Atlas Connection GUI クラスター選択画面

Connect Your Application ステップに進み、[Go ドライバー] を選択します。[Copy] ボタンをクリックして、次に示すように接続文字列 をクリップボードにコピーします。

Atlas Connection GUI 接続文字列画面

Atlas 接続文字列を安全な場所に保存し、次の手順でアクセスできます。

Atlas を介して Go ドライバーに接続する方法について詳しくは、 Atlas ドライバー接続ガイド を参照し、[言語の選択] ドロップダウンから [Go] を選択してください。

次に、プロジェクトの基本ディレクトリに、main.go というアプリケーションを格納するファイルを作成します。次のサンプル コードを使用して、MongoDB Atlas のサンプル データセットに対してクエリを実行します。

MongoDB Atlas 接続文字列を uri 変数の値として指定するか、MONGODB_URI という環境変数を作成し、その値として Atlas 接続文字列を設定します。

export MONGODB_URI='<your atlas connection string>'

注意

接続文字列の「<password>」セクションを、atlasAdmin 権限を持つユーザー用に作成したパスワードに置き換えてください。

package main
import (
"context"
"encoding/json"
"fmt"
"log"
"os"
"github.com/joho/godotenv"
"go.mongodb.org/mongo-driver/bson"
"go.mongodb.org/mongo-driver/mongo"
"go.mongodb.org/mongo-driver/mongo/options"
)
func main() {
if err := godotenv.Load(); err != nil {
log.Println("No .env file found")
}
uri := os.Getenv("MONGODB_URI")
if uri == "" {
log.Fatal("Set your 'MONGODB_URI' environment variable. " +
"See: " +
"www.mongodb.com/ja-jp/docs/drivers/go/current/usage-examples/#environment-variable")
}
client, err := mongo.Connect(context.TODO(), options.Client().
ApplyURI(uri))
if err != nil {
panic(err)
}
defer func() {
if err := client.Disconnect(context.TODO()); err != nil {
panic(err)
}
}()
coll := client.Database("sample_mflix").Collection("movies")
title := "Back to the Future"
var result bson.M
err = coll.FindOne(context.TODO(), bson.D{{"title", title}}).
Decode(&result)
if err == mongo.ErrNoDocuments {
fmt.Printf("No document was found with the title %s\n", title)
return
}
if err != nil {
panic(err)
}
jsonData, err := json.MarshalIndent(result, "", " ")
if err != nil {
panic(err)
}
fmt.Printf("%s\n", jsonData)
}

コマンドラインから次のコマンドを使用してサンプル コードを実行します。

go run main.go

main.go を実行すると、サンプル データセットから次のような映画の詳細が出力されます。

{
"_id": "573a1398f29313caabce9682",
...
"title": "Back to the Future",
...
}

出力がまったくないかエラーが表示される場合は、環境変数が正しく設定されているかどうか、および MongoDB Atlas クラスターにサンプル データセットがロードされているかどうかを確認してください。

Tip

出力が空の場合は、サンプル データセットがクラスターにロードされていることを確認してください。

この手順を完了すると、Go ドライバーを使用して MongoDB クラスターに接続し、サンプル データに対してクエリを実行し、結果を出力する動作するアプリケーションが作成されます。

Go ドライバーを使用してデータを読み取って変更する方法については、Fundamentals CRUD ガイドをご覧ください。また、一般的な操作を実行する方法については、「使用例」を参照してください。

戻る

MongoDB Go ドライバー