接続オプション
Overview
このガイドでは、いくつかの一般的なMongoDB接続および認証オプションについて説明します。接続 URI のパラメーターとして接続オプションを渡し、クライアントの動作を指定できます。
オプション
次の表では、接続 URI で設定できる接続オプションについて説明します。各エントリには、オプション名、値の型、デフォルト値、オプションの説明が記載されています。
オプション名 | タイプ | デフォルト値 | 説明 |
---|---|---|---|
timeoutMS | integer |
|
|
connectTimeoutMS | integer |
| タイムアウトするまで接続を試みる時間をミリ秒単位で指定します。 |
maxPoolSize | integer |
| 特定の時点で接続プールが持つことができる接続の最大数を指定します。 |
replicaSet | string |
| クラスタのレプリカセット名を指定します。レプリカセット内のすべてのノードは同じレプリカセット名でなければなりません。そうでない場合、クライアントはそれらをセットの一部と見なしません。 |
maxIdleTimeMS | integer |
| 接続が削除されて閉じられるまで、接続プール内でアイドル状態を維持できる最大時間を指定します。デフォルトは |
minPoolSize | integer |
| ドライバーが単一の接続プールで維持する接続の最小数を指定します。 |
serverSelectionTimeoutMS | integer |
| 操作を実行するために、利用可能で適切なサーバーを見つけるまでの待ち時間をミリ秒単位で指定します。 |
heartbeatFrequencyMS | integer |
| 定期的なバックグラウンド サーバー チェック間の待機時間をミリ秒単位で指定します。 |
tls | ブール値 |
| インスタンスとのトランスポート層セキュリティ (TLS) 接続を確立するかどうかを指定します。接続文字列で DNS シードリスト (SRV) を使用する場合、これは自動的に |
w | string or integer |
| 書込み保証(書込み保証 (write concern)を指定します。値の詳細については、サーバーのドキュメントにおける 書込み保証(write concern) オプションを参照してください。 |
directConnection | ブール値 |
| 接続 URI で指定されたホストにすべての操作を強制的にディスパッチするかどうかを指定します。 |
接続オプションの完全なリストについては、 ClientOptions APIドキュメントを参照してください。
Single Timeout Setting
1 つの操作の実行にかかる最大時間を指定するには、Client
インスタンスに単一の Timeout
オプションを設定します。
クライアントレベルのタイムアウトを設定するには、Client
インスタンスのオプションを指定するときに SetTimeout()
メソッドを呼び出すか、接続 URI で timeoutMS
オプションを指定します。デフォルトでは、特定の操作に別のタイムアウトを設定しない場合、アプリケーション内の他の場所にあるすべての Database
、Collection
、Session
、ChangeStream
、および Bucket
インスタンスは、Client
からの Timeout
オプションを継承します。操作のコンテキスト。
操作に渡された Context にタイムアウトを設定すると、ドライバーはその値を操作に使用します。 Context タイムアウトを指定しない場合、操作Context は Client
インスタンスからタイムアウトを生成します。
注意
タイムアウト指定による再試行
操作レベルのコンテキストで、Client
または にタイムアウトを設定し、サーバーが再試行可能なエラーを返した場合、ドライバーはタイムアウト前に操作を可能な限り再試行します。
タイムアウトが経過すると、ドライバーはタイムアウトのエラーを返します。再試行可能な読み取り と 再試行可能な書込み の詳細については、サーバー マニュアルを参照してください。
タイムアウトの例
このセクションでは、 アプリケーションでタイムアウトを設定するさまざまな方法を示す例えを示します。
クライアント オプション
次のコードは、SetTimeout()
メソッドを使用して Client
に Timeout
オプションを設定する方法を示しています。
opts := options.Client().SetTimeout(5 * time.Second) client, err := mongo.Connect(opts)
接続文字列オプション
次の例では、 timeoutMS
URI オプションを使用して単一のタイムアウトを設定する方法を示しています。次に、コードはタイムアウトを継承する挿入操作を実行します。
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}})