AI エージェント向け: ドキュメントインデックスは https://www.mongodb.com/ja-jp/docs/llms.txt で利用できます。すべてのページの markdown バージョンは、いずれかの URL パスに .md を追加することで利用できます。
Docs Menu

接続オプションの指定

このページでは、Cドライバーで使用できる接続オプションと、それらをMongoDB接続に適用する方法について説明します。

次のセクションでは、接続オプションを指定する方法について説明します。

接続文字列をmonogoc_client_t 構造に渡す場合は、接続オプションを <name>=<value> ペアとしてstringに含めることができます。次の例では、接続文字列に、値が 60000 である connectTimeoutMS オプションと、true の値を持つ tls オプションが含まれています。

mongoc_init();
// Specifies the connection options in the connection string
const char *uri = "mongodb+srv://localhost:27017/?connectTimeoutMS=60000&tls=true";
// Creates a new client
mongoc_client_t *client = mongoc_client_new_from_uri_with_error(uri, &error);
if (!client) {
fprintf(stderr, "%s\n", error.message);
goto cleanup;
}
// Use client...
cleanup:
mongoc_client_destroy(client);
mongoc_uri_destroy(uri);

To learn more about the options that you can specify in a connection string, see Connection String Options in the MongoDB Server manual.

URI オプションを使用すると、接続文字列ではなくコードで接続設定を構成できます。このように接続を構成すると、実行時に設定を変更しやすくなり、コンパイル中にエラーを検出しやすくなり、接続文字列よりも多くの構成オプションが提供されます。

URI オプションを使用して接続オプションを設定するには、次の手順を実行します。

  1. 接続文字列を使用して mongoc_uri_t 構造体を作成します

  2. URI オプション関数を使用して、必要な接続オプションを指定します

  3. URI を に渡し、その URI で新しいクライアントを作成します mongoc_client_new_from_uri()

次のコード例は、前述の手順を実行する方法を示しています。

mongoc_uri_t *uri = mongoc_uri_new_with_error("mongodb+srv://localhost:27017/", &error);
if (!uri) {
fprintf(stderr, "%s\n", error.message);
goto cleanup;
}
// Specifies the connection options by using the URI options API
if (!mongoc_uri_set_option_as_int32(uri, MONGOC_URI_CONNECTTIMEOUTMS, 60000)) {
fprintf(stderr, "Failed to set '%s'\n", MONGOC_URI_CONNECTTIMEOUTMS);
goto cleanup;
}
if (!mongoc_uri_set_option_as_bool(uri, MONGOC_URI_TLS, true)) {
fprintf(stderr, "Failed to set '%s'\n", MONGOC_URI_TLS);
goto cleanup;
}
// Creates a new client
client = mongoc_client_new_from_uri_with_error(uri, &error);
if (!client) {
fprintf(stderr, "%s\n", error.message);
goto cleanup;
}
// Use client...
cleanup:
mongoc_client_destroy(client);
mongoc_uri_destroy(uri);

次のセクションでは、Cドライバーで使用できる接続オプションと、接続文字列を直接またはURIオプションを使用してそれらを指定する方法について説明します。

すべての 操作 をホストするに強制的にディスパッチするかどうかを指定します。このオプションを指定すると、ドライバーは SRV 接続形式を受け入れません。代わりに、標準の接続 URI形式を使用する必要があります。SRV 接続と標準接続形式の詳細については、接続文字列ガイドを参照してください。

デフォルト値は false です。複数のホスト名を指定する場合、このプロパティをfalse に設定する必要があります。

mongoc_uri_t *uri = mongoc_uri_new("mongodb://localhost:27017/?directConnection=true");

接続するレプリカセットの名前。 デフォルト値は null です。

mongoc_uri_t *uri = mongoc_uri_new("mongodb+srv://localhost:27017/?replicaSet=yourReplicaSet");

サーバーへの接続に TLS を必要とするかどうかを指定します。"mongodb+srv" のスキームを使用するか、他の TLS オプションを指定する場合、このオプションはデフォルトで true になります。それ以外の場合、デフォルトは false になります。

mongoc_uri_t *uri = mongoc_uri_new("mongodb+srv://localhost:27017/?tls=true");

TLS 制約を可能な限り緩和するかどうかを指定します。これには、無効な証明書またはホスト名の不一致を許可することが含まれます。デフォルト値は false です。

次のコード例は、このオプションを true に設定する方法を示しています。

mongoc_uri_t *uri = mongoc_uri_new("mongodb+srv://localhost:27017/?tls=true&tlsAllowInvalidCertificates=true");

TLS ハンドシェイク中に証明書失効チェックを無効にするかどうか。デフォルト値は false です。

mongoc_uri_t *uri = mongoc_uri_new("mongodb+srv://localhost:27017/?tls=true&tlsDisableCertificateRevocationCheck=true");

TLS/SSL オプションには、クライアント証明書、失効処理、TLS/SSL プロトコルの有効化と無効化などがあります。デフォルト値は null です。

このオプションは、URI オプションを使用してのみ設定できます。SSL オプションの設定方法を学ぶには、MongoC URI Optionタブの下の「SSL オプション」セクションを参照してください。

TLS オプションの詳細については、「トランスポート層セキュリティ (TLS) の構成」ガイドを参照してください。

ドライバーがタイムアウトする前に、サーバーへの単一の TCP ソケット接続を確立しようとする時間の長さ。デフォルト値は 10 秒です。

mongoc_uri_t *uri = mongoc_uri_new("mongodb+srv://localhost:27017/?connectTimeoutMS=60000");

ドライバーがタイムアウトする前にソケット上で送信または受信を試みる時間の長さ。デフォルト値はオペレーティング システムによって設定されます。

mongoc_uri_t *uri = mongoc_uri_new("mongodb+srv://localhost:27017/?socketTimeoutMS=60000");

サーバーとの間で送受信されるワイヤプロトコル メッセージの 優先圧縮タイプ 。任意のビルド時間依存関係として、「snappy」、「zlib」、および「zstd」を有効にできます。ドライバーは、サーバーがサポートする最初の圧縮タイプを使用します。デフォルト値は空です。

mongoc_uri_t *uri = mongoc_uri_new("mongodb+srv://localhost:27017/?compressors=zlib,snappy");

ドライバーが接続プール内に作成できるクライアントまたは接続の最大数。このカウント数には、使用中の接続が含まれています。デフォルト値は 100 です。

mongoc_uri_t *uri = mongoc_uri_new("mongodb+srv://localhost:27017/?maxPoolSize=150");

ドライバーがタイムアウトする前にサーバーの接続プールから接続をチェックアウトしようとする時間の長さ。

mongoc_uri_t *uri = mongoc_uri_new("mongodb+srv://localhost:27017/?waitQueueTimeoutMS=30000");

接続プールの詳細については、接続プールガイドを参照してください。

The w component of the write concern, which requests acknowledgment that the write operation has propagated to a specified number of MongoDB instances. The default value is "majority" or 1, depending on the number of arbiters and voting nodes. To learn more about the w option, see Write Concern in the MongoDB Server manual.

mongoc_uri_t *uri = mongoc_uri_new("mongodb+srv://localhost:27017/?w=2");

The wtimeoutms component of the write concern, which specifies a time limit for the write concern. To learn more about the wtimeout option, see Write Concern in the MongoDB Server manual.

mongoc_uri_t *uri = mongoc_uri_new("mongodb+srv://localhost:27017/?wTimeoutMS=5000");

書込み保証 (write concern)の j コンポーネントは、 MongoDBインスタンスがオンディスクのジャーナルに書き込んだことの確認を要求します。デフォルト値は、writeConcernMajorityJournalDefault 設定の値によって異なります。j オプションの詳細については、 MongoDB Serverマニュアルの「 書込み保証 」を参照してください。

mongoc_uri_t *uri = mongoc_uri_new("mongodb+srv://localhost:27017/?journal=true");

クライアントの読み取り保証 (read concern) ) レベル詳細については、MongoDB Serverマニュアルの読み取り保証 (read concern)のリファレンスを参照してください。

mongoc_uri_t *uri = mongoc_uri_new("mongodb+srv://localhost:27017/?readConcernLevel=local");

The client's default read-preference settings. The default value is primary. See Read Preference in the MongoDB Server manual for more information.

mongoc_uri_t *uri = mongoc_uri_new("mongodb+srv://localhost:27017/?readPreference=primaryPreferred");

Max Staleness 秒は、セカンダリで発生してもサーバー選択の対象となる最長のレプリケーションラグ を、ウォール クロック時間で表します。maxStalenessSeconds に許可される最小値は 90 秒です。このオプションは、非プライマリの読み込み設定 (read preference)で使用する必要があります。

mongoc_uri_t *uri = mongoc_uri_new("mongodb+srv://localhost:27017/?readPreference=secondary&maxStalenessSeconds=120");

サーバーの適格性のレイテンシウィンドウ。サーバーの往復時間が、最速のサーバーの往復時間とこの値よりも長い時間がかかる場合、そのサーバーは選択対象になりません。デフォルト値は 15 ミリ秒です。

mongoc_uri_t *uri = mongoc_uri_new("mongodb+srv://localhost:27017/?localThresholdMS=150");

ドライバーがMongoDB Serverへの認証に使用するメカニズム。認証メカニズムを指定しない 場合、ドライバーはサーバーのバージョンに応じて SCRAM-SHA-1 または SCRAM-SHA-256 のいずれかを使用します。利用可能な認証メカニズムの詳細については、認証メカニズム または エンタープライズ認証メカニズム のガイドを参照してください。

mongoc_uri_t *uri = mongoc_uri_new("mongodb+srv://localhost:27017/?authSource=admin&authMechanism=GSSAPI");

サーバーモニタリングチェックの間隔。500 ミリ秒以上である必要があります。デフォルト値は、プール型(マルチスレッド)モードでは 10000 ミリ秒(10 秒)、非プール(シングルスレッド)モードでは 60000 ミリ秒(60 秒)です。

mongoc_uri_t *uri = mongoc_uri_new("mongodb+srv://localhost:27017/?heartbeatFrequencyMS=5000");

ドライバーがタイムアウトする前にサーバーを選択しようとする時間の長さ。デフォルト値は 30000 ミリ秒(30 秒)です。

mongoc_uri_t *uri = mongoc_uri_new("mongodb+srv://localhost:27017/?serverSelectionTimeoutMS=40000");

シングル スレッド クライアントにのみ適用されます。時間内にソケットが使用されなかった場合、ドライバーは再度使用される前に簡単な "hello" 呼び出しで接続をチェックします。デフォルトは 5000 ミリ秒(5 秒)です。

mongoc_uri_t *uri = mongoc_uri_new("mongodb+srv://localhost:27017/?socketCheckIntervalMS=10000");

再試行可能な読み取りを有効にします。 デフォルト値は true です。

mongoc_uri_t *uri = mongoc_uri_new("mongodb+srv://localhost:27017/?retryReads=false");

再試行可能な書き込みを有効にします。 デフォルト値は true です。

mongoc_uri_t *uri = mongoc_uri_new("mongodb+srv://localhost:27017/?retryWrites=false");

注意

Intelligent ワークロード マネジメント (IWM) におけるロードシェディング

SystemOverloadedError または RetryableError ラベルのエラーがアプリケーションで障害を引き起こしている場合、またはアプリケーションのログに表示されている場合、クラスターで Load Shedding がアクティブになっており、ドライバーがそれをサポートするバージョンにアップグレードされていない可能性があります。MongoDB C ドライバーをバージョン2.3以降にアップグレードすることをお勧めします。アップグレード後もこれらのエラーが続く場合は、Load Shedding 設定の検討などのサーバー側の変更、またはカスタムエラー処理やクライアント側のリクエストスロットリングの実装するなどのアプリケーション側の変更によって対処できます。状況によっては、アプリケーション側の変更が望ましい、または必要な場合があります。

Load Shedding は IWM の機能であり、過負荷が継続している間に過剰な操作を拒否することでサーバーの負荷を管理するのに役立ちます。この機能は MongoDB 9.0 以降で使用できます。

For more information about IWM or handling overload errors, see the Intelligent Workload Management page or Overload Errors page in the Atlas documentation.

接続ハンドシェイクの一環として、ドライバーがクライアントのメタデータでサーバーに渡すアプリ名。サーバーは接続を確立すると、この値をMongoDBログに出力します。この値は、スロー クエリ ログとプロファイル コレクションにも記録されます。デフォルト値は空です。

mongoc_uri_t *uri = mongoc_uri_new("mongodb+srv://localhost:27017/?appName=yourAppName");

ドライバーが ロードバランサーに接続しているかどうかを指定します。このプロパティは、次の条件が すべて 満たされている場合にのみ、 true に設定できます。

  • ホスト名を 1 つだけ指定

  • レプリカセットに接続していません。

  • SrvMaxHostsプロパティを使用していません

  • DirectConnectionプロパティを使用していません

デフォルト値は false です。

mongoc_uri_t *uri = mongoc_uri_new("mongodb+srv://localhost:27017/?loadBalanced=true");

シードリストを最初に設定するとき、または SRV ポーリング中にトポロジーに新しいホストを追加するときにランダムに選択する SRV 結果の最大数。デフォルト値は 0 です。

このプロパティは、接続文字列スキームが ConnectionStringScheme.MongoDBPlusSrv に設定されている場合にのみ使用できます。レプリカセットに接続する場合は、 を使用できません。

mongoc_uri_t *uri = mongoc_uri_new("mongodb+srv://localhost:27017/?srvMaxHosts=5");

このページで使用されているタイプの詳細については、次のAPIドキュメントを参照してください。