Overview
このページでは、Go ドライバーで使用できる接続オプションと、それらを MongoDB 接続に適用する方法について説明します。
接続オプションを指定する方法
以下のセクションでは、接続文字列または ClientOptions 構造体を使用して接続オプションを指定する方法について説明します。
接続文字列の使用
ClientOptions 構造体を Connect() メソッドに渡すことで、接続文字列で接続オプションを指定できます。接続文字列では、文字列内に接続オプションを <name>=<value> ペアとして含めることができます。次の例では、接続文字列に、値が 60000 ミリ秒の connectTimeoutMS オプションと、値が true の tls オプションが含まれています。
const uri = "mongodb+srv://localhost:27017/?connectTimeoutMS=60000&tls=true"client, _ := mongo.Connect(options.Client().ApplyURI(uri))ClientOptions 構造体の使用
また、接続オプションを ClientOptions 構造体にチェーンして接続設定を構成することもできます。この方法で接続を構成すると、実行時に設定を変更しやすくなり、コンパイル中にエラーを検出しやすくなり、接続文字列よりも多くの構成オプションが提供されます。
次のコード例では、Timeout オプションを 60 秒に設定し、空の tls.Config 構造体を SetTLSConfig() メソッドに渡すことで TLS を有効にします。
opts := options.Client(). SetConnectTimeout(60 * time.Second). SetTLSConfig(&tls.Config{})
client, _ := mongo.Connect(opts)レプリカセット オプション
直接接続
すべての操作をホストに強制的にディスパッチするかどうかを指定します。このオプションを指定すると、ドライバーは SRV 接続形式を受け入れません。代わりに標準の接続 URI 形式を使用する必要があります。SRV 接続と標準接続形式の詳細については、MongoDB Server マニュアルの接続文字列ガイドを参照してください。
複数のホスト名を指定する場合、このプロパティを false に設定する必要があります。
データ型: bool
デフォルト値: false
例:
const uri = "mongodb://localhost:27017/?directConnection=true"client, _ := mongo.Connect(options.Client().ApplyURI(uri))レプリカセット
接続するレプリカセットの名前。
データ型: string
デフォルト値: nil
例:
const uri = "mongodb://localhost:27017/?replicaSet=yourReplicaSet"client, _ := mongo.Connect(options.Client().ApplyURI(uri))直接接続
すべての操作をホストに強制的にディスパッチするかどうかを指定します。このオプションを指定すると、ドライバーは SRV 接続形式を受け入れません。代わりに標準の接続 URI 形式を使用する必要があります。SRV 接続と標準接続形式の詳細については、MongoDB Server マニュアルの接続文字列ガイドを参照してください。
複数のホスト名を指定する場合、このプロパティを false に設定する必要があります。
データ型: bool
デフォルト値: false
例:
opts := options.Client(). SetDirect(true)
client, _ := mongo.Connect(opts)レプリカセット
接続するレプリカセットの名前。
データ型: string
デフォルト値: nil
例:
opts := options.Client(). SetReplicaSet("yourReplicaSet")
client, _ := mongo.Connect(opts)TLS のオプション
TLS の有効化
サーバーへの接続に TLS を必要とするかどうかを指定します。"mongodb+srv" のスキームを使用するか、他の TLS オプションを指定する場合、このオプションはデフォルトで true になります。それ以外の場合、デフォルトは false になります。
データ型: bool
デフォルト値: nil
例:
const uri = "mongodb://localhost:27017/?tls=true"client, _ := mongo.Connect(options.Client().ApplyURI(uri))証明書の失効を無効にする
tlsDisableCertificateRevocationCheck オプションは、TLS 接続の証明書失効チェックを無効にします。このオプションをtrueに設定すると、ドライバーは証明書の失効ステータスを検証しませんが、証明書チェーンとホスト名は引き続き検証します。このオプションを設定すると、false に設定した場合でも、暗黙的に TLS が有効になります。このオプションを tlsInsecure または tlsDisableOCSPEndpointCheck と組み合わせないでください。
データ型: bool
デフォルト値: false
例:
uri := os.Getenv("MONGODB_URI")if uri == "" { log.Fatal("Set your 'MONGODB_URI' environment variable")}
// Use an ampersand instead of a question mark if the connection string// already contains query options.separator := "?"if strings.Contains(uri, "?") { separator = "&"}
uriOptions := options.Client(). ApplyURI(uri + separator + "tlsDisableCertificateRevocationCheck=true")TLS の有効化
サーバーへの接続に TLS を必要とするかどうかを指定します。"mongodb+srv" のスキームを使用するか、他の TLS オプションを指定する場合、このオプションはデフォルトで true になります。それ以外の場合、デフォルトは false になります。
データ型: tls.Config
デフォルト値: false
例:
opts := options.Client(). SetTLSConfig(&tls.Config{})
client, _ := mongo.Connect(opts)証明書の失効を無効にする
SetDisableCertificateRevocationCheck()メソッドは、TLS接続の証明書失効チェックを無効にします。このオプションをtrueに設定すると、ドライバーは証明書の失効ステータスを検証しませんが、証明書チェーンとホスト名は引き続き検証します。このオプションを設定しても、TLSが暗黙的に有効になるわけではありません。このオプションをtlsInsecureまたはtlsDisableOCSPEndpointCheckと組み合わせないでください。
データ型: bool
デフォルト値: false
例:
settingsOptions := options.Client(). SetDisableCertificateRevocationCheck(true)TLS オプションの詳細については、 接続での TLS の有効化 ガイドを参照してください。
タイムアウト オプション
ConnectTimeout
タイムアウトする前にドライバーがサーバーへの単一の TCP ソケット接続を確立しようとする時間の長さ。
データ型: 非負 int
デフォルト値: 30000 ミリ秒
例:
const uri = "mongodb://localhost:27017/?connectTimeoutMS=60000"client, _ := mongo.Connect(options.Client().ApplyURI(uri))タイムアウト
timeoutMSオプションは、クライアントで実行される単一の操作がエラーを返す前に実行できる時間を指定します。
データ型: 非負 int
デフォルト値: nil
例:
const uri = "mongodb://localhost:27017/?timeoutMS=30000"client, _ := mongo.Connect(options.Client().ApplyURI(uri))ConnectTimeout
タイムアウトする前にドライバーがサーバーへの単一の TCP ソケット接続を確立しようとする時間の長さ。
データ型: time.Duration
デフォルト値: 30 秒
例:
opts := options.Client(). SetConnectTimeout(60 * time.Second)
client, _ := mongo.Connect(opts)タイムアウト
SetTimeout()メソッドは、クライアントで実行される単一の操作がエラーを返す前に実行できる時間を指定します。
データ型: time.Duration
デフォルト値: nil
例:
opts := options.Client(). SetTimeout(30 * time.Second)
client, _ := mongo.Connect(opts)圧縮オプション
コンプレッサー
サーバーとの間で送受信されるワイヤ プロトコル メッセージの圧縮には、次の順でこれらのタイプが推奨されます。ビルド時の任意の依存関係として、"snappy" 、"zlib" 、"zstd" を有効にできます。ドライバーは、サーバーがサポートするこれらの圧縮タイプの最初のものを使用します。
データ型: string (カンマ区切りの値)
デフォルト値: nil
例:
const uri = "mongodb://localhost:27017/?compressors=zlib,snappy"client, _ := mongo.Connect(options.Client().ApplyURI(uri))zlibCompressionLevel
zlibCompressionLevelオプションは、zlibが使用する圧縮レベルを設定します。zlibがApplyURIまたはSetCompressorsを通じてコンプレッサーとして指定されていない場合、このオプションは無視されます。このオプションは、-1から9の間の整数値を受け入れます。
-1: (デフォルト).zlibはデフォルトの圧縮レベル(通常は6)を使用します。0: 圧縮なし。1: 速度は最も速くなりますが、圧縮は最小です。9: 圧縮には最適ですが、速度は最も遅くなります。
データ型: int
デフォルト値: -1
例:
const uri = "mongodb://localhost:27017/?compressors=zlib&zlibCompressionLevel=6"client, _ := mongo.Connect(options.Client().ApplyURI(uri))Zstandard 圧縮レベル
zstdCompressionLevelオプションは、zstdが使用する圧縮レベルを設定します。zstdがApplyURIまたはSetCompressorsを通じてコンプレッサーとして指定されていない場合、このオプションは無視されます。このオプションは、1から20の間の整数値を受け入れます。
1: 速度は最も速くなりますが、圧縮は最小です。20: 圧縮には最適ですが、速度は最も遅くなります。
データ型: int
デフォルト値: 6
例:
const uri = "mongodb://localhost:27017/?compressors=zstd&zstdCompressionLevel=6"client, _ := mongo.Connect(options.Client().ApplyURI(uri))コンプレッサー
サーバーとの間で送受信されるワイヤ プロトコル メッセージの圧縮には、次の順でこれらのタイプが推奨されます。ビルド時の任意の依存関係として、"snappy" 、"zlib" 、"zstd" を有効にできます。ドライバーは、サーバーがサポートするこれらの圧縮タイプの最初のものを使用します。
データ型: []string
デフォルト値: nil
例:
opts := options.Client(). SetCompressors([]string{"zlib", "snappy"})
client, _ := mongo.Connect(opts)zlibCompressionLevel
SetZlibLevel()メソッドは、zlibが使用する圧縮レベルを設定します。zlibがApplyURIまたはSetCompressorsを通じてコンプレッサーとして指定されていない場合、このオプションは無視されます。このオプションは、-1から9の間の整数値を受け入れます。
-1: (デフォルト)。
zlibはデフォルトの圧縮レベル(通常は6)を使用します。0 :圧縮なし。
1 :速度は最も速く、圧縮は最小です。
9 :圧縮に最適ですが、速度は最も遅くなります。
データ型: int
デフォルト値: -1
例:
opts := options.Client(). SetCompressors([]string{"zlib"}). SetZlibLevel(6)
client, _ := mongo.Connect(opts)Zstandard 圧縮レベル
SetZstdLevel() メソッドは、zstd が使用する圧縮レベルを設定します。zstdがApplyURIまたはSetCompressorsを通じてコンプレッサーとして指定されていない場合、このオプションは無視されます。このオプションは、1から20の間の整数値を受け入れます。
データ型: int
デフォルト値: 6
例:
opts := options.Client(). SetCompressors([]string{"zstd"}). SetZstdLevel(8)
client, _ := mongo.Connect(opts)圧縮の詳細については、「ネットワークトラフィックの圧縮」ガイドを参照してください。
接続プール オプション
maxPoolSize
ドライバーが接続プール内で作成できるクライアントまたは接続の最大数。このカウント数には、使用中の接続が含まれます。
データ型: 非負 int
デフォルト値: 100
例:
const uri = "mongodb://localhost:27017/?maxPoolSize=150"client, _ := mongo.Connect(options.Client().ApplyURI(uri))minPoolSize
操作が行われていない場合でも、ドライバーが接続プールに作成して維持する接続の数。このカウント数には、使用中の接続が含まれます。
データ型: 非負 int
デフォルト値: 0
例:
const uri = "mongodb://localhost:27017/?minPoolSize=3"client, _ := mongo.Connect(options.Client().ApplyURI(uri))MaxConnectionIdleTime
ドライバーが接続を閉じる前に接続がアイドル状態になる時間の長さ。
データ型: 非負 int
デフォルト値: 0
例:
const uri = "mongodb://localhost:27017/?maxIdleTimeMS=8000"client, _ := mongo.Connect(options.Client().ApplyURI(uri))MaxConnecting
maxConnecting オプションは、接続プールが同時に確立できる接続の最大数を設定します。
データ型: 非負 int
デフォルト値: 2
例:
const uri = "mongodb://localhost:27017/?maxConnecting=3"client, _ := mongo.Connect(options.Client().ApplyURI(uri))maxPoolSize
ドライバーが接続プール内で作成できるクライアントまたは接続の最大数。このカウント数には、使用中の接続が含まれます。
データ型: 非負 uint64
デフォルト値: 100
例:
opts := options.Client(). SetMaxPoolSize(150)
client, _ := mongo.Connect(opts)minPoolSize
操作が行われていない場合でも、ドライバーが接続プールに作成して維持する接続の数。このカウント数には、使用中の接続が含まれます。
データ型: 非負 uint64
デフォルト値: 0
例:
opts := options.Client(). SetMinPoolSize(3)
client, _ := mongo.Connect(opts)MaxConnectionIdleTime
ドライバーが接続を閉じる前に接続がアイドル状態になる時間の長さ。
データ型: time.Duration
デフォルト値: 0
例:
opts := options.Client(). SetMaxConnIdleTime(8 * time.Second)
client, _ := mongo.Connect(opts)MaxConnecting
SetMaxConnecting() メソッドは、接続プールが同時に確立できる接続の最大数を設定します。
データ型: 非負 uint64
デフォルト値: 2
例:
opts := options.Client(). SetMaxConnecting(3)
client, _ := mongo.Connect(opts)接続プールの詳細については、接続プールガイドを参照してください。
書込み保証(write concern)オプション
書込み保証 (write concern)
書込み保証 (write concern)の w コンポーネント。指定された数のMongoDBインスタンスに書込み (write)操作が反映されたことの確認応答を要求します。デフォルト値は、アービタと投票ノードの数に応じて "majority" または 1 です。w オプションの詳細については、 MongoDB Serverマニュアルの書込み保証を参照してください。
データ型: int or string
デフォルト値: 1 or "majority"
例:
const uri = "mongodb://localhost:27017/?w=2"client, _ := mongo.Connect(options.Client().ApplyURI(uri))書込み保証 (write concern)
書込み保証 (write concern)の w コンポーネント。指定された数のMongoDBインスタンスに書込み (write)操作が反映されたことの確認応答を要求します。デフォルト値は、アービタと投票ノードの数に応じて "majority" または 1 です。w オプションの詳細については、 MongoDB Serverマニュアルの書込み保証を参照してください。
データ型: writeconcern.WriteConcern
デフォルト値: 1 or "majority"
例:
wc := &writeconcern.WriteConcern{ W: 2,}opts := options.Client().SetWriteConcern(wc)
client, _ := mongo.Connect(opts)readConcern オプション
読み取り保証(read concern)
クライアントの読み取り保証 (read concern) ) レベル詳細については、MongoDB Serverマニュアルの読み取り保証 (read concern)のリファレンスを参照してください。
データ型: string
デフォルト値: local
例:
const uri = "mongodb://localhost:27017/?readConcernLevel=majority"client, _ := mongo.Connect(options.Client().ApplyURI(uri))読み取り保証(read concern)
クライアントの読み取り保証 (read concern) ) レベル詳細については、MongoDB Serverマニュアルの読み取り保証 (read concern)のリファレンスを参照してください。
データ型: readconcern.ReadConcern
デフォルト値: nil
例:
opts := options.Client(). SetReadConcern(readconcern.Majority())
client, _ := mongo.Connect(opts)設定オプションを読む
読み込み設定 (read preference)
クライアントのデフォルトの読み込み設定 (read preference)。詳細については、MongoDB Server マニュアルの「読み込み設定 (read preference)」を参照してください。
データ型: string
デフォルト値: primary
例:
const uri = "mongodb://localhost:27017/?readPreference=primaryPreferred"client, _ := mongo.Connect(options.Client().ApplyURI(uri))読み込み設定 (read preference)
クライアントのデフォルトの読み込み設定 (read preference)。詳細については、MongoDB Server マニュアルの「読み込み設定 (read preference)」を参照してください。
データ型: readpref.ReadPref
デフォルト値: readpref.Primary()
例:
opts := options.Client(). SetReadPreference(readpref.PrimaryPreferred())
client, _ := mongo.Connect(opts)認証オプション
認証メカニズム
ドライバーがMongoDB Serverに対して認証するために使用するメカニズム。認証メカニズムを指定しない場合、ドライバーはサーバーのバージョンに応じてSCRAM-SHA-1またはSCRAM-SHA-256のいずれかを使用します。
利用可能な認証メカニズムの詳細については、認証メカニズムガイドを参照してください。
データ型: string
デフォルト値: 空(認証なし)、または認証が有効になった後の SCRAM-SHA-256
例:
const uri = "mongodb://user:password@localhost:27017/?authMechanism=PLAIN&authSource=admin"client, _ := mongo.Connect(options.Client().ApplyURI(uri))認証メカニズム
ドライバーがMongoDB Serverに対して認証するために使用するメカニズム。認証メカニズムを指定しない場合、ドライバーはサーバーのバージョンに応じてSCRAM-SHA-1またはSCRAM-SHA-256のいずれかを使用します。
利用可能な認証メカニズムの詳細については、認証メカニズムガイドを参照してください。
データ型: Credential
デフォルト値: 空(認証なし)、または認証が有効になった後の SCRAM-SHA-256
例:
credential := options.Credential{ AuthMechanism: "PLAIN", AuthSource: "admin", Username: "user", Password: "password",}opts := options.Client().SetAuth(credential)
client, _ := mongo.Connect(opts)サーバー選択オプション
ServerSelectionTimeout
ドライバーがタイムアウトする前にサーバーを選択しようとする時間の長さ。
データ型: 非負 int
デフォルト値: 30000 ミリ秒
例:
const uri = "mongodb://localhost:27017/?serverSelectionTimeoutMS=40000"client, _ := mongo.Connect(options.Client().ApplyURI(uri))LocalThreshold
サーバーの選択対象となるレイテンシウィンドウ。サーバーの往復時間が、最速のサーバーの往復時間とこの値を合わせた値より長い場合、そのサーバーは選択対象になりません。
データ型: 非負 int
デフォルト値: 15 ミリ秒
例:
const uri = "mongodb://localhost:27017/?localThresholdMS=20000"client, _ := mongo.Connect(options.Client().ApplyURI(uri))ServerSelectionTimeout
ドライバーがタイムアウトする前にサーバーを選択しようとする時間の長さ。
データ型: time.Duration
デフォルト値: 30 秒
例:
opts := options.Client(). SetServerSelectionTimeout(40 * time.Second)
client, _ := mongo.Connect(opts)LocalThreshold
サーバーの選択対象となるレイテンシウィンドウ。サーバーの往復時間が、最速のサーバーの往復時間とこの値を合わせた値より長い場合、そのサーバーは選択対象になりません。
データ型: time.Duration
デフォルト値: 15 ミリ秒
例:
opts := options.Client(). SetLocalThreshold(20 * time.Millisecond)
client, _ := mongo.Connect(opts)再試行オプション
RetryReads
再試行可能な読み取りを有効にします。
データ型: bool
デフォルト値: true
例:
const uri = "mongodb://localhost:27017/?retryReads=false"client, _ := mongo.Connect(options.Client().ApplyURI(uri))RetryWrites
再試行可能な書き込みを有効にします。
データ型: bool
デフォルト値: true
例:
const uri = "mongodb://localhost:27017/?retryWrites=false"client, _ := mongo.Connect(options.Client().ApplyURI(uri))Max Atlas の再試行
maxAdaptiveRetries オプションは、サーバー側の過負荷エラーで失敗した操作をドライバーが再試行する最大回数を設定します。
データ型: 非負 int
デフォルト値: 2
例:
const uri = "mongodb://localhost:27017/?maxAdaptiveRetries=3"client, _ := mongo.Connect(options.Client().ApplyURI(uri))RetryReads
再試行可能な読み取りを有効にします。
データ型: bool
デフォルト値: true
例:
opts := options.Client(). SetRetryReads(false)
client, _ := mongo.Connect(opts)RetryWrites
再試行可能な書き込みを有効にします。
データ型: bool
デフォルト値: true
例:
opts := options.Client(). SetRetryWrites(false)
client, _ := mongo.Connect(opts)Max Atlas の再試行
SetMaxAdaptiveRetries() メソッドは、サーバー側の過負荷エラーで失敗した操作をドライバーが再試行する最大回数を設定します。
データ型: 非負 uint
デフォルト値: 2
例:
opts := options.Client(). SetMaxAdaptiveRetries(3)
client, _ := mongo.Connect(opts)その他のオプション
ApplicationName
接続ハンドシェイクの一環として、ドライバーがクライアント メタデータでサーバーに渡すアプリ名。接続が確立されると、サーバーはこの値を MongoDB ログに出力します。この値は、ログ ファイル、スロークエリ ログ、プロファイル コレクションにも記録されます。
データ型: string
デフォルト値: nil
例:
const uri = "mongodb://localhost:27017/?appName=yourAppName"client, _ := mongo.Connect(options.Client().ApplyURI(uri))LoadBalanced
ドライバーが ロードバランサーに接続しているかどうかを指定します。このプロパティは、次の条件が すべて 満たされている場合にのみ、 true に設定できます。
ホスト名を 1 つだけ指定
レプリカセットに接続していません。
SrvMaxHostsプロパティを使用していませんDirectConnectionプロパティを使用していません
データ型: bool
デフォルト値: false
例:
const uri = "mongodb://localhost:27017/?loadBalanced=true"client, _ := mongo.Connect(options.Client().ApplyURI(uri))SrvMaxHosts
シードリストを初期設定するとき、または SRV ポーリング中にトポロジーに新しいホストを追加するときにランダムに選択する SRV 結果の最大数。
このプロパティは、接続文字列スキームが ConnectionStringScheme.MongoDBPlusSrv に設定されている場合にのみ使用できます。レプリカセットに接続する場合は、 を使用できません。
データ型: 非負 int
デフォルト値: 0
例:
opts := options.Client(). SetSRVMaxHosts(5)
client, _ := mongo.Connect(opts)srvServiceName
ドライバーがシードリストを構築するために取得するSRVリソースレコードのサービス名。ドライバーは、サービス名を使用して、次の形式に一致する SRV URI を作成します。
_{srvServiceName}._tcp.{hostname}.{domainname}このプロパティは、検出およびポーリングの SRV lookup のデフォルトのサービス名を上書きします。デフォルト値は "mongodb" です。
このプロパティは、接続文字列スキームが ConnectionStringScheme.MongoDBPlusSrv に設定されている場合にのみ使用できます。レプリカセットに接続する場合は、 を使用できません。
データ型: string
デフォルト値: mongodb
例:
const uri = "mongodb+srv://localhost/?srvServiceName=yourServiceName"client, _ := mongo.Connect(options.Client().ApplyURI(uri))ApplicationName
接続ハンドシェイクの一環として、ドライバーがクライアント メタデータでサーバーに渡すアプリ名。接続が確立されると、サーバーはこの値を MongoDB ログに出力します。この値は、ログ ファイル、スロークエリ ログ、プロファイル コレクションにも記録されます。
データ型: string
デフォルト値: nil
例:
opts := options.Client(). SetAppName("yourAppName")
client, _ := mongo.Connect(opts)LoadBalanced
ドライバーが ロードバランサーに接続しているかどうかを指定します。このプロパティは、次の条件が すべて 満たされている場合にのみ、 true に設定できます。
ホスト名を 1 つだけ指定
レプリカセットに接続していません。
SrvMaxHostsプロパティを使用していませんDirectConnectionプロパティを使用していません
データ型: bool
デフォルト値: false
例:
opts := options.Client(). SetLoadBalanced(true)
client, _ := mongo.Connect(opts)Server API
SetServerAPIOptions() メソッドは、コマンドの実行時にサーバーに送信される API バージョンを構成します。サーバー API の詳細については、Stable API ガイドを参照してください。
データ型: ServerAPIOptions
デフォルト値: nil
例:
opts := options.Client(). SetServerAPIOptions(options.ServerAPI(options.ServerAPIVersion1))
client, _ := mongo.Connect(opts)SrvMaxHosts
シードリストを初期設定するとき、または SRV ポーリング中にトポロジーに新しいホストを追加するときにランダムに選択する SRV 結果の最大数。
このプロパティは、接続文字列スキームが ConnectionStringScheme.MongoDBPlusSrv に設定されている場合にのみ使用できます。レプリカセットに接続する場合は、 を使用できません。
データ型: 非負 int
デフォルト値: 0
例:
opts := options.Client(). SetSRVMaxHosts(5)
client, _ := mongo.Connect(opts)srvServiceName
ドライバーがシードリストを構築するために取得するSRVリソースレコードのサービス名。ドライバーは、サービス名を使用して、次の形式に一致する SRV URI を作成します。
_{srvServiceName}._tcp.{hostname}.{domainname}このプロパティは、検出およびポーリングの SRV lookup のデフォルトのサービス名を上書きします。デフォルト値は "mongodb" です。
このプロパティは、接続文字列スキームが ConnectionStringScheme.MongoDBPlusSrv に設定されている場合にのみ使用できます。レプリカセットに接続する場合は、 を使用できません。
データ型: string
デフォルト値: mongodb
例:
opts := options.Client(). SetSRVServiceName("yourServiceName")
client, _ := mongo.Connect(opts)詳細情報
接続文字列で指定できるオプションの詳細については、 MongoDB Serverマニュアルの「 接続文字列オプション 」を参照してください。
このページで使用されているタイプの詳細については、次のAPIドキュメントを参照してください。