Overview
このガイドでは、接続文字列と MongoClient
オブジェクトを使用して、 Goドライバーを使用してさまざまなタイプのMongoDB配置に接続する方法を学習できます。
Tip
MongoClient
オブジェクトを作成および構成する方法については、mongo クライアントの作成 ページを参照してください。
Atlas への接続
MongoDBAtlas上の 配置に接続するには、 接続string に次の要素を含めます。
Atlas クラスターの URL
MongoDB ユーザー名
MongoDB パスワード
次に、接続stringを MongoClient
コンストラクターに渡します。
Atlas に接続するときは、Atlas が MongoDB Server の新しいバージョンにアップグレードするときに重大な変更を回避するために、 Stable API クライアント オプションを使用することをお勧めします。 Stable API 機能について詳しくは、「 Stable APIガイド 」をご覧ください。
次のコードは、Atlas接続文字列と Stable API バージョンを使用するクライアントを作成し、MongoDB に接続して、接続が成功したことを確認する方法を示しています。
// Connects to MongoDB and sets a Stable API version package main import ( "context" "fmt" "log" "os" "go.mongodb.org/mongo-driver/v2/bson" "go.mongodb.org/mongo-driver/v2/mongo" "go.mongodb.org/mongo-driver/v2/mongo/options" ) func main() { var uri string if uri = os.Getenv("MONGODB_URI"); uri == "" { log.Fatal("You must set your 'MONGODB_URI' environment variable. See\n\t https://mongodb.com/ja-jp/docs/drivers/go/current/usage-examples/") } // Uses the SetServerAPIOptions() method to set the Stable API version to 1 serverAPI := options.ServerAPI(options.ServerAPIVersion1) // Defines the options for the MongoDB client opts := options.Client().ApplyURI(uri).SetServerAPIOptions(serverAPI) // Creates a new client and connects to the server client, err := mongo.Connect(opts) if err != nil { panic(err) } defer func() { if err = client.Disconnect(context.TODO()); err != nil { panic(err) } }() // Sends a ping to confirm a successful connection var result bson.M if err := client.Database("admin").RunCommand(context.TODO(), bson.D{{"ping", 1}}).Decode(&result); err != nil { panic(err) } fmt.Println("Pinged your deployment. You successfully connected to MongoDB!") }
重要
新しいサーバーレスインスタンスは作成できなくなり、5 年 5 月 2025 日現在、既存のすべてのサーバーレスインスタンスが移行されました。 The Atlas UIの すべてのクラスター ページには、インスタンスが使用状況に基づいて移行される階層が表示されます。既存のサーバーレスインスタンスを手動で処理する方法の詳細については、サーバーレスインスタンスの管理ページを参照してください。
ローカル配置への接続
開発目的でローカルマシン上で MongoDB サーバーを実行する必要がある場合は、次の手順を実行します。
MongoDB Server の Communityバージョン または Enterprise バージョンをダウンロードします。
MongoDB Serverをインストールして構成します。
サーバーを起動します。
重要
MongoDBサーバーを悪意のある攻撃から常に保護します。セキュリティ推奨事項のリストについては、サーバー マニュアルのセキュリティ チェックリストを参照してください。
MongoDB Serverを正常に開始したら、ドライバー接続コードで接続文字列を指定します。
MongoDB Server がローカルで実行されている場合は、接続文字列 "mongodb://localhost:<port>"
を使用できます。ここで、<port>
は、着信接続をリッスンするようにサーバーに設定したポート番号です。
別のホスト名またはIPアドレスを指定する方法の詳細については、サーバー マニュアルの接続文字列を参照してください。
サーバーに接続できるかどうかをテストするには、前述のコード例の接続文字列をローカルホスト接続文字列に置き換えます。
レプリカセットへの接続
MongoDB レプリカセットの配置は、同じデータ セットを保存する接続されたインスタンスのグループです。この構成により、データの冗長性と高いデータ可用性が実現します。
レプリカセットの配置に接続するには、各インスタンスのホスト名とポート番号をカンマで区切って指定し、レプリカセット名を接続文字列の replicaSet
パラメータの値として指定します。 次の接続文字列の例では、ホスト名は host1
、host2
、host3
で、ポート番号はすべて 27017
です。 レプリカセット名は myRS
です。
mongodb://host1:27017,host2:27017,host3:27017/?replicaSet=myRS
レプリカセットに接続すると、ドライバーはデフォルトで次のアクションを実行します。
いずれかのノードのアドレスが指定されると、レプリカセットのすべてのノードを検出します。
プライマリに対する書込み指示などの操作を適切なノードに割り振ります。
Tip
レプリカセットに接続するホストを 1 つだけ指定できます。ただし、指定したホストが利用できない場合でも接続できるようにするには、ホストの全リストを提供する必要があります。
レプリカセットの詳細については、サーバー マニュアルの レプリケーション のエントリを参照してください。
直接接続
接続文字列で指定されたホストで操作を強制するには、directConnection
オプションを指定します。 直接接続では、次の動作が見られます。
SRV string はサポートされていません。
指定されたホストがプライマリでない場合、書き込み (write) は失敗します。
指定されたホストが プライマリノードでない場合は、 セカンダリの読み込み設定 (read preference)のあるセカンダリノードを指定する必要があります。
注意
Docker のレプリカセット
レプリカセットがDockerで実行される場合、公開されるMongoDBエンドポイントは 1 つだけです。この場合、レプリカセットは検出できません。接続 URI で directConnection=false
を指定するか、このオプションを未設定のままにすると、アプリケーションがその接続に接続できなくなる可能性があります。
テスト環境または開発環境では、directConnection=true
を指定してレプリカセットに接続できます。本番環境では、Docker 仮想ネットワークの外部から各 MongoDB インスタンスにアクセスできるようにクラスターを構成することを推奨します。
DNS サービス検出
DNS サービス検出を使用して接続しているサービスの DNS SRVレコードを検索するには、接続文字列で SRV 接続形式を指定します。 この形式を指定すると、 Goドライバーは新しいホストを自動的に再スキャンします。配置により、クライアント構成を変更しなくても、トポロジーにホストを追加できます。
次のコードは、 SRV 接続形式を使用する接続文字列を示しています。
uri := "mongodb+srv://<hostname>/"
SRV 接続形式の詳細については、 MongoDB Serverマニュアルの「 SRV 接続形式 」のエントリを参照してください。
API ドキュメント
MongoClient
を使用して別のMongoDBインスタンスに接続する方法の詳細については、次のAPIドキュメントを参照してください。