Join us Sept 17 at .local NYC! Use code WEB50 to save 50% on tickets. Learn more >
MongoDB Event
Docs Menu
Docs Home
/ / /
Go Driver
/

接続ターゲットの選択

このガイドでは、接続文字列と MongoClientオブジェクトを使用して、 Goドライバーを使用してさまざまなタイプのMongoDB配置に接続する方法を学習できます。

Tip

MongoClientオブジェクトを作成および構成する方法については、mongo クライアントの作成 ページを参照してください。

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 サーバーを実行する必要がある場合は、次の手順を実行します。

  1. MongoDB Server の Communityバージョン または Enterprise バージョンをダウンロードします。

  2. MongoDB Serverをインストールして構成します。

  3. サーバーを起動します。

重要

MongoDBサーバーを悪意のある攻撃から常に保護します。セキュリティ推奨事項のリストについては、サーバー マニュアルのセキュリティ チェックリストを参照してください。

MongoDB Serverを正常に開始したら、ドライバー接続コードで接続文字列を指定します。

MongoDB Server がローカルで実行されている場合は、接続文字列 "mongodb://localhost:<port>" を使用できます。ここで、<port> は、着信接続をリッスンするようにサーバーに設定したポート番号です。

別のホスト名またはIPアドレスを指定する方法の詳細については、サーバー マニュアルの接続文字列を参照してください。

サーバーに接続できるかどうかをテストするには、前述のコード例の接続文字列をローカルホスト接続文字列に置き換えます。

MongoDB レプリカセットの配置は、同じデータ セットを保存する接続されたインスタンスのグループです。この構成により、データの冗長性と高いデータ可用性が実現します。

レプリカセットの配置に接続するには、各インスタンスのホスト名とポート番号をカンマで区切って指定し、レプリカセット名を接続文字列の replicaSet パラメータの値として指定します。 次の接続文字列の例では、ホスト名は host1host2host3 で、ポート番号はすべて 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 SRVレコードを検索するには、接続文字列で SRV 接続形式を指定します。 この形式を指定すると、 Goドライバーは新しいホストを自動的に再スキャンします。配置により、クライアント構成を変更しなくても、トポロジーにホストを追加できます。

次のコードは、 SRV 接続形式を使用する接続文字列を示しています。

uri := "mongodb+srv://<hostname>/"

SRV 接続形式の詳細については、 MongoDB Serverマニュアルの「 SRV 接続形式 」のエントリを参照してください。

MongoClient を使用して別のMongoDBインスタンスに接続する方法の詳細については、次のAPIドキュメントを参照してください。

戻る

MongoClient の作成

項目一覧