Go Driver クイック スタート
項目一覧
このガイドでは、Go ドライバーを使用して MongoDB Atlas クラスターに接続するアプリケーションを作成する方法について説明します。別のドライバーまたはプログラミング言語を使用して MongoDB に接続する場合は、公式 MongoDB ドライバーのリスト を参照してください。
Go ドライバーを使用すると、Go アプリケーションから MongoDB クラスターに接続して通信できます。
MongoDB Atlas は、MongoDB クラスターでデータをホストする完全管理クラウドデータベース サービスです。このガイドでは、独自の無料クラスター(クレジットカードは不要)を開始する方法を説明します。
Go アプリケーションを MongoDB Atlas クラスターに接続するには、以下の手順に従います。
プロジェクトを設定する
Go Modを使用してプロジェクトを初期化する
新しいディレクトリを作成し、go mod
を使用してプロジェクトを初期化します。
mkdir go-quickstart cd go-quickstart go mod init go-quickstart
MongoDB を依存関係として追加する
Go ドライバーを依存関係として追加するには、 go get
を使用します。
go get go.mongodb.org/mongo-driver/mongo
その他の依存関係を追加する
go get
を使用して、追加の依存関係を追加します。このクイックスタートでは、godotenv
パッケージを使用して環境変数から MongoDB 文字列を読み取り、ソースコード内に認証情報が埋め込まれないようにしています。
go get github.com/joho/godotenv
MongoDB クラスターを作成する
Atlasで無料階層クラスターをセットアップする
Go プロジェクトの依存関係を設定したら、データを保存および管理できる MongoDB クラスターを作成します。Atlas スタートガイドを完了して、新しい Atlas アカウント、無料階層の MongoDB クラスターを設定し、データセットをロードして、データをやり取りします。
Atlas ガイドの手順を完了すると、Atlas に新しい MongoDB クラスターがデプロイされ、新しいデータベース ユーザーが作成され、サンプル データセットがクラスターにロードされます。
クラスターに接続する
この手順では、Go ドライバーを使用して MongoDB クラスターに接続し、サンプル データに対してクエリを実行するアプリケーションを作成して実行します。
MongoDB クラスターに接続する場所と方法に関する指示を、接続文字列と呼ばれる文字列でドライバーに渡します。この文字列には、クラスターのホスト名または IP アドレスとポート、認証メカニズム、ユーザー認証情報(該当する場合)、およびその他の接続オプションに関する情報が含まれます。
前のステップで作成したクラスターとユーザーの接続文字列を取得するには、Atlas アカウントにログインして「Database」セクションに移動し、次に示すように接続するクラスターの [Connect] ボタンをクリックします。
Connect Your Application ステップに進み、[Go ドライバー] を選択します。[Copy] ボタンをクリックして、次に示すように接続文字列 をクリップボードにコピーします。
Atlas 接続文字列を安全な場所に保存し、次の手順でアクセスできます。
Atlas を介して Go ドライバーに接続する方法について詳しくは、 Atlas ドライバー接続ガイド を参照し、[言語の選択] ドロップダウンから [Go] を選択してください。
アプリケーションから MongoDB クラスターをクエリする
次に、プロジェクトの基本ディレクトリに、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 ガイドをご覧ください。また、一般的な操作を実行する方法については、「使用例」を参照してください。