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 の有効化 ガイドを参照してください。
タイムアウト オプション
ConnectTimeout
タイムアウトする前にドライバーがサーバーへの単一の TCP ソケット接続を確立しようとする時間の長さ。
データ型: 非負 int
デフォルト値: 30000 ミリ秒
例:
const uri = "mongodb://localhost:27017/?connectTimeoutMS=60000" client, _ := mongo.Connect(options.Client().ApplyURI(uri))
タイムアウト
クライアントで実行される単一の操作がエラーを返すまでに実行できる時間。
データ型: 非負 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)
タイムアウト
クライアントで実行される単一の操作がエラーを返すまでに実行できる時間。
データ型: 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
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 圧縮レベル
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
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 圧縮レベル
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
接続プールが同時に確立できる接続の最大数。
データ型: 非負 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
接続プールが同時に確立できる接続の最大数。
データ型: 非負 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)
クライアントのデフォルトの読み取り設定。詳細については、 MongoDB Serverマニュアルの「 読み込み設定 」を参照してください。
データ型: string
デフォルト値: primary
例:
const uri = "mongodb://localhost:27017/?readPreference=primaryPreferred" client, _ := mongo.Connect(options.Client().ApplyURI(uri))
読み込み設定 (read preference)
クライアントのデフォルトの読み取り設定。詳細については、 MongoDB Serverマニュアルの「 読み込み設定 」を参照してください。
データ型: 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 の再試行
ドライバーがサーバ側の過負荷エラーで失敗した操作を再試行する最大回数。
データ型: 非負 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 の再試行
ドライバーがサーバ側の過負荷エラーで失敗した操作を再試行する最大回数。
データ型: 非負 uint
デフォルト値: 2
例:
const uri = "mongodb://localhost:27017/?maxAdaptiveRetries=3" client, _ := mongo.Connect(options.Client().ApplyURI(uri))
その他のオプション
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
コマンドの実行時にサーバーに送信される 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ドキュメントを参照してください。