Docs Menu
Docs Home
/ / /
Go Driver
/ /

接続ガイド

項目一覧

  • Overview
  • 接続URI
  • MongoDB に接続する他の方法

このガイドでは、Go ドライバーを使用して MongoDB インスタンスまたはレプリカセットの配置に接続する方法を学習できます。

Go ドライバーを使用して、次の環境でホストされている配置に接続できます。

  • MongoDB Atlas: MongoDB をクラウドに配置するための完全管理サービス

  • MongoDB Enterprise: サブスクリプションベースの自己管理型 MongoDB バージョン

  • MongoDB Community: ソースが利用可能で、無料で使用できる自己管理型 MongoDB バージョン

接続 URI(接続文字列とも呼ばれます)は、MongoDB 配置に接続する方法と、接続中の動作をドライバーに指示します。

次の図は、サンプル接続 URI の各部分について説明しています。

接続文字列の各部分

この例では、プロトコルに mongodbを使用し、標準接続文字列形式を指定します。配置の柔軟性を高め、クライアントを再構成せずにサーバーをローテーションで変更する機能が必要な場合は、DNS シード リスト接続形式を使用することもできます。

接続stringの次の部分には、データベースユーザー名と、パスワードベースの認証を使用している場合はパスワードが含まれます。 userの値をデータベースユーザー名に、 passの値をパスワードに置き換えます。 ユーザー名とパスワードを必要としない認証メカニズムを使用している場合は、接続 URI のこの部分を省略します。

接続文字列の次の部分は、MongoDB インスタンスのホスト名または IP アドレスとポートを指定します。前の例では、ホスト名としてsample.hostを使用し、ポートとして27017を使用しています。これらの値を置き換えて、MongoDB インスタンスを指すようにします。

接続文字列の最後の部分は、接続オプションと認証オプションを指定します。この例では、maxPoolSize=20 と の 2w=majority つの接続オプションを設定しています。接続オプションの詳細については、 接続オプションガイドをご覧ください。

MongoDB に接続するには、クライアントを作成する必要があります。クライアントが接続を管理し、データベースコマンドを実行します。

Tip

クライアントの再利用

クライアントは複数のセッションやオペレーションで再利用することをお勧めします。毎回新しいインスタンスをClient 1 つ作成するのではなく、同じ インスタンスを使用して複数のタスクを実行できます。Client 型は複数の goroutine によって安全に同時使用できます 。ドライバーで接続プールがどのように機能するかについて詳しくは、 「FAQ」ページ を参照してください。

ClientOptions オブジェクトを Connect() メソッドに渡すことで、接続文字列とその他のクライアント オプションを使用するクライアントを作成できます。

接続 URI を指定するには、それを ApplyURI() メソッドに渡します。これにより、新しい ClientOptions インスタンスが返されます。その他のオプションを設定するには、 optionsパッケージから関連するヘルパー メソッドを呼び出します。

接続オプションの詳細については、 「接続オプション」セクション を参照してください。クライアントの作成の詳細については、 クライアント および Connect() のAPIドキュメントを参照してください。

新しいサーバー バージョンにアップグレードするときに重大な変更を回避するために、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/")
}
// Use the SetServerAPIOptions() method to set the Stable API version to 1
serverAPI := options.ServerAPI(options.ServerAPIVersion1)
opts := options.Client().ApplyURI(uri).SetServerAPIOptions(serverAPI)
// Create a new client and connect 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)
}
}()
// Send 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!")
}

Tip

クイック スタート ガイドに従って、Atlas の接続文字列を取得します。

注意

Atlas Serverless への接続の詳細については、必要な最小ドライバー バージョンを特定するために、「サーバーレスインスタンスの制限 」ページを参照してください。

Atlas でホストされていない単一の MongoDB 配置またはレプリカセットに接続する場合は、次のセクションで接続方法を確認してください。

開発目的でローカルマシン上で MongoDB サーバーを実行する必要がある場合は、次の手順を実行します。

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

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

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

重要

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

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

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

別のホスト名または IP アドレスを指定する場合は、サーバー マニュアルの「接続文字列 」に関する記述を参照してください。

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

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

レプリカセットの配置に接続するには、各インスタンスのホスト名とポート番号をカンマで区切って指定し、レプリカセット名を接続文字列の replicaSet パラメーターの値として指定します。次の例では、ホスト名は host1host2host3で、ポート番号はすべて27017です。レプリカセット名は myRSです。

mongodb://host1:27017,host2:27017,host3:27017/?replicaSet=myRS

レプリカセットに接続すると、ドライバーはデフォルトで次のアクションを実行します。

  • いずれかのノードのアドレスが指定されると、レプリカセットのすべてのノードを検出します。

  • プライマリに対する書込み指示などの操作を適切なノードに割り振ります。

Tip

レプリカセットに接続するホストを 1 つだけ指定できます。ただし、指定したホストが利用できない場合でも接続できるようにするには、ホストの全リストを提供する必要があります。

接続 URI で指定されたホストで操作を強制するには、directConnection オプションを指定します。直接接続では、次の動作が見られます。

  • SRV string はサポートされていません。

  • 指定されたホストが プライマリ でない場合、書き込みは失敗します。

  • 指定されたホストが プライマリノードでない場合は、 セカンダリに読み込み設定 (read preference)を指定する 必要があります。

戻る

接続