Overview
このガイドでは、接続、認証、ドライバーのオプションと、Lambda アプリケーションのデータベース接続構成でそれらを指定する方法を学習できます。 接続オプションは、データベース接続を管理する MongoDB PHP ライブラリに渡されます。
MongoDB PHP ライブラリの詳細については、 MongoDB PHP ライブラリのドキュメント を参照してください。
このガイドでは、次のトピックについて説明します。
接続オプションと認証オプション
次のセクションでは、構成ファイルに一般的な接続および認証オプションを追加する方法を学びます。
接続オプションと認証オプションの追加
次のいずれかの方法を使用して、Lambda ウェブ アプリケーションのconfig/database.php構成ファイルで接続オプションまたは認証オプションを指定できます。
設定と値を配列項目として
options配列項目に追加します。dsn配列項目で指定された接続stringに、設定と値をクエリstringパラメーターとして追加します。
options配列でオプションを指定するには、次の例に示すように、名前と値を配列アイテムとして追加します。
'connections' => [ 'mongodb' => [ 'dsn' => 'mongodb+srv://mongodb0.example.com/', 'driver' => 'mongodb', 'database' => 'sample_mflix', 'options' => [ 'appName' => 'myLaravelApp', 'compressors' => 'zlib', 'zlibCompressionLevel' => 7, ], ], ],
接続stringのパラメーターとしてオプションを指定するには、次のクエリstring構文形式を使用します。
ホスト情報を パラメーターから区切るために、疑問符文字
?を追加します。オプションを追加するには、
<option>=<value>としてフォーマットします。各オプションと値のペアの間にアンパサンド文字
&を挿入して、それらを区切ります。
次の設定例は、接続stringパラメーターの構文を示しています。
'dsn' => 'mongodb+srv://mongodb0.example.com/?appName=myLaravelApp&compressors=zlib',
オプションの説明
次の表では、接続オプションと認証オプションの一覧とそのデフォルト値について説明しています。
オプション名 | 許容値 | デフォルト値 | 説明 |
|---|---|---|---|
appName | 文字列 | なし | MongoDB PHPライブラリがハンドシェイクの一部としてMongoDBデプロイを送信するアプリケーション名を指定します。 |
authMechanism | 文字列 | なし | 使用する認証メカニズムを指定します。 このオプションを指定しない場合、ドライバーはデフォルトの認証メカニズムを使用します。 詳細については、サーバー マニュアルの 「認証」 を参照してください。 |
authMechanismProperties | 文字列 | なし |
|
authSource | 文字列 | 説明を参照してください |
|
compressors | 文字列のコンマ区切りリスト | なし | MongoDB PHP ライブラリが使用するデータコンプレッサーを指定して、指定された順序で MongoDB とアプリケーション間で渡されるネットワーク データの量を削減します。 |
connectTimeoutMS | Non-negative integer |
| サーバーに接続するときに、基礎の各 TCP ストリームに渡される接続タイムアウトをミリ秒単位で指定します。 |
directConnection | ブール値 |
| クラスター内のすべてのサーバーを検出して接続するのではなく、単一のホストに直接接続するかどうかを指定します。 この設定の詳細については、接続ガイドの「直接接続」を参照してください。 |
heartbeatFrequencyMS | 以上の整数 |
| 各監視スレッドがサーバー チェックの実行間で待機する時間をミリ秒単位で指定します。 |
journal | ブール値 |
| 操作がディスク上のジャーナルに伝達されたことの確認を要求します。 |
localThresholdMS | Non-negative integer |
| ドライバーとサーバー間の平均往復時間が、すべての適切なサーバーの最短のラウンドトリップ時間と比較して、続く時間をミリ秒単位で指定します。 |
maxStalenessSeconds |
|
| 指定された操作でセカンダリノードが考慮される、プライマリノードよりの最大遅延を秒単位で指定します。このオプションの値は少なくとも でなければなりません。そうでない場合、操作はエラーを発生させます。値が |
readConcernLevel | 文字列 | なし | MongoDB PHP ライブラリによって実行される操作のデフォルトの読み取り保証 (read concern) を指定します。 詳細については、サーバー マニュアルの「読み取り保証」を参照してください。 |
readPreference | 文字列 |
| MongoDB PHP ライブラリが読み取り操作をレプリカセット メンバーにルーティングする方法を指定します。 詳細については、サーバー マニュアルの「読み込み設定」を参照してください。 |
readPreferenceTags | キーと値のペアをコンマで区切ったリスト | なし | どのレプリカセット ノードを操作の対象にするかを指定します。 このキーの各インスタンスは、個別のタグ セットです。 ドライバーは、各タグを持つ 1 つ以上のサーバーを見つけるまで、各タグセットをチェックします。 |
replicaSet | 文字列 | なし | MongoDB PHP ライブラリが接続するレプリカセットの名前を指定します。 |
retryReads | ブール値 |
| 操作が失敗した場合に MongoDB PHP ライブラリが読み取り操作を再試行するかどうかを指定します。 |
serverSelectionTimeoutMS | Non-negative integer |
| MongoDB PHP ライブラリがタイムアウトする前に、操作のサーバーを選択するまでの待機時間をミリ秒単位で指定します。 |
tls | ブール値 |
| MongoDB PHPライブラリがサーバーとの接続で使用する TLS 構成を指定します。デフォルトでは |
tlsAllowInvalidCertificates | ブール値 |
| サーバーが無効な証明書を提示した場合にMongoDB PHPライブラリがエラーを返すかどうかを指定します。アプリケーションにセキュリティ上の脆弱性が生じないよう、テスト環境でのみこのオプションを |
tlsCAFile | 文字列 | 説明を参照してください | MongoDB PHPライブラリが TLS に使用する認証局(CA)ファイルへのパスを指定します。このオプションを指定しない場合、ドライバーは |
tlsCertificateKeyFile | 文字列 | なし | MongoDB PHPライブラリが ID を確認するためにサーバーに提示する証明書ファイルへのパスを指定します。このオプションを設定しない場合、 |
tlsInsecure | ブール値 |
| サーバーが無効な証明書を提示した場合にMongoDB PHPライブラリがエラーを返すかどうかを指定します。アプリケーションにセキュリティ上の脆弱性が生じないよう、テスト環境でのみこのオプションを |
w | 負でない整数または文字列 | なし | 特定の数または種類のサーバーに操作が反映されたことの確認応答を要求します。詳細については、サーバー |
wTimeoutMS | Non-negative integer | タイムアウトなし | 書込み保証 (write concern) の時間制限をミリ秒単位で指定します。 操作が時間制限内に要求されたレベルに伝播しなかった場合、MongoDB PHP ライブラリはエラーを発生させます。 |
zlibCompressionLevel |
|
|
|
接続オプションの完全なリストを表示するには、サーバー マニュアルの『 接続文字列 』ガイドの「接続stringオプション 」セクションを参照してください。 ページの右側にあるSelect your languageドロップダウン メニューからPHPを選択します。
ドライバー接続オプション
ドライバー オプションは、Lambel アプリケーションと MongoDB 間の接続とすべての操作を管理する MongoDB PHP ライブラリの動作を変更します。
Lambda Web アプリケーションのconfig/database.php構成ファイルでドライバー オプションを指定できます。 ドライバー オプションを追加するには、次の例に示すように、設定と値を配列項目としてdriver_options配列項目に追加します。
'connections' => [ 'mongodb' => [ 'dsn' => 'mongodb+srv://mongodb0.example.com/', 'driver' => 'mongodb', 'database' => 'sample_mflix', 'driver_options' => [ 'serverApi' => 1, 'allow_invalid_hostname' => false, ], ], ]
ドライバー オプションのリストについては、MongoDB PHP ライブラリのドキュメントの「 $DriverOptions: 配列セクション 」を参照してください。
ID フィールド名変換の使用を無効化
Lambda MongoDB v5.0 以降、id はMongoDBドキュメントの _idフィールドのエイリアスであり、ライブラリはクエリとデータの保存時に最上位フィールドと埋め込みフィールドの両方で id を _id に自動的に変換します。
Lambda MongoDB v5.3 以降を使用している場合は、埋め込みドキュメントの id から _id への自動変換を無効にできます。これを行うには、次のいずれかのアクションを実行します。
config/database.phpファイルで、rename_embedded_id_field設定をfalseに設定します。'connections' => [ 'mongodb' => [ 'dsn' => 'mongodb+srv://mongodb0.example.com/', 'driver' => 'mongodb', 'database' => 'sample_mflix', 'rename_embedded_id_field' => false, // Other settings ], ], アプリケーション内の
setRenameEmbeddedIdField()メソッドにfalseを渡します。DB::connection('mongodb')->setRenameEmbeddedIdField(false);
重要
このオプションは、既存のドキュメントスキーマとの下位互換性を確保するためにのみ使用することをお勧めします。新しいプロジェクトでは、Lambda のデフォルト動作を維持できるように、埋め込みドキュメントのフィールド名に id を使用しないようにします。