Docs Menu
Docs Home
/ / /
Go Driver
/ /

接続オプション

項目一覧

  • Overview
  • オプション
  • Single Timeout Setting
  • タイムアウトの例

このガイドでは、いくつかの一般的なMongoDB接続および認証オプションについて説明します。接続 URI のパラメーターとして接続オプションを渡し、クライアントの動作を指定できます。

次の表では、接続 URI で設定できる接続オプションについて説明します。各エントリには、オプション名、値の型、デフォルト値、オプションの説明が記載されています。

オプション名
タイプ
デフォルト値
説明

timeoutMS

integer

null

Clientで実行される単一の操作がタイムアウト エラーを返すまでにかかる時間をミリ秒単位で指定します。操作コンテキストに期限がない場合にのみ、操作はこの設定を尊重します。

connectTimeoutMS

integer

30000

タイムアウトするまで接続を試みる時間をミリ秒単位で指定します。

maxPoolSize

integer

100

特定の時点で接続プールが持つことができる接続の最大数を指定します。

replicaSet

string

null

クラスタのレプリカセット名を指定します。レプリカセット内のすべてのノードは同じレプリカセット名でなければなりません。そうでない場合、クライアントはそれらをセットの一部と見なしません。

maxIdleTimeMS

integer

0

接続が削除されて閉じられるまで、接続プール内でアイドル状態を維持できる最大時間を指定します。デフォルトは0であり、接続が無期限に未使用のままになることを意味します。

minPoolSize

integer

0

ドライバーが単一の接続プールで維持する接続の最小数を指定します。

serverSelectionTimeoutMS

integer

30000

操作を実行するために、利用可能で適切なサーバーを見つけるまでの待ち時間をミリ秒単位で指定します。

heartbeatFrequencyMS

integer

10000

定期的なバックグラウンド サーバー チェック間の待機時間をミリ秒単位で指定します。

tls

ブール値

false

インスタンスとのトランスポート層セキュリティ (TLS) 接続を確立するかどうかを指定します。接続文字列で DNS シードリスト (SRV) を使用する場合、これは自動的にtrueに設定されます。値をfalseに設定することで、この動作をオーバーライドできます。

w

string or integer

null

書込み保証(書込み保証 (write concern)を指定します。値の詳細については、サーバーのドキュメントにおける 書込み保証(write concern) オプションを参照してください。

directConnection

ブール値

false

接続 URI で指定されたホストにすべての操作を強制的にディスパッチするかどうかを指定します。

接続オプションの完全なリストについては、 ClientOptions APIドキュメントを参照してください。

1 つの操作の実行にかかる最大時間を指定するには、Clientインスタンスに単一の Timeout オプションを設定します。

クライアントレベルのタイムアウトを設定するには、Clientインスタンスのオプションを指定するときに SetTimeout() メソッドを呼び出すか、接続 URI で timeoutMS オプションを指定します。デフォルトでは、特定の操作に別のタイムアウトを設定しない場合、アプリケーション内の他の場所にあるすべての DatabaseCollectionSessionChangeStream、および Bucket インスタンスは、Client からの Timeout オプションを継承します。操作のコンテキスト。

操作に渡された Context にタイムアウトを設定すると、ドライバーはその値を操作に使用します。 Context タイムアウトを指定しない場合、操作Context は Clientインスタンスからタイムアウトを生成します。

注意

タイムアウト指定による再試行

操作レベルのコンテキストで、Client または にタイムアウトを設定し、サーバーが再試行可能なエラーを返した場合、ドライバーはタイムアウト前に操作を可能な限り再試行します。

タイムアウトが経過すると、ドライバーはタイムアウトのエラーを返します。再試行可能な読み取り と 再試行可能な書込み の詳細については、サーバー マニュアルを参照してください。

このセクションでは、 アプリケーションでタイムアウトを設定するさまざまな方法を示す例えを示します。

次のコードは、SetTimeout() メソッドを使用して ClientTimeout オプションを設定する方法を示しています。

opts := options.Client().SetTimeout(5 * time.Second)
client, err := mongo.Connect(opts)

次の例では、 timeoutMSURI オプションを使用して単一のタイムアウトを設定する方法を示しています。次に、コードはタイムアウトを継承する挿入操作を実行します。

uri := "mongodb://user:pass@sample.host:27017/?timeoutMS=5000"
client, err := mongo.Connect(options.Client().ApplyURI(uri))
...
coll.InsertOne(context.Background(), doc)

次の例では、 Context で操作レベルのタイムアウトを設定する方法を示しています。これは、設定したクライアント レベルのタイムアウトよりも優先順位されます。

ctx, cancel := context.WithTimeout(context.TODO(), time.Second)
defer cancel()
res, err := coll.InsertOne(ctx, bson.D{{"x", 2}})

戻る

接続ガイド