Overview
このページでは、Scala ドライバーで使用できる MongoDB 接続および認証オプションと、MongoDB 接続においてそれらを指定する方法について説明します。
接続 URI でオプションを設定する
MongoClient() コンストラクターに接続 URI を渡す場合は、接続オプションを <name>=<value> ペアとして文字列に含めることができます。次の例では、接続 URI に、値が 60000 の connectTimeoutMS オプションと、値が true の tls オプションが含まれています。
val uri = "mongodb://localhost:27017/?connectTimeoutMS=60000&tls=true" val mongoClient = MongoClient(uri)
MongoClientSettings でオプションを設定する
MongoClientSettings.Builderクラスのメソッドを使用してMongoClientSettingsインスタンスで接続オプションを設定し、設定オブジェクトをMongoClient()コンストラクタに渡します。
このように接続を構成すると、実行時に設定を変更しやすくなり、コンパイル時にエラーを検出しやすくなります。
次の例は、 MongoClientSettingsインスタンスの作成時に接続ターゲットを指定する方法と、その他のオプションを設定する方法を示しています。
val settings = MongoClientSettings.builder() .applyToClusterSettings(builder => builder.hosts(List(new ServerAddress("localhost", 27017)).asJava)) .applyToSocketSettings(builder => builder.connectTimeout(60000, TimeUnit.MILLISECONDS)) .applyToSslSettings(builder => builder.enabled(true)) .build() val mongoClient = MongoClient(settings)
ホスト名とポートを指定する代わりに接続stringを指定する場合は、applyConnectionString() メソッドを使用し、次のコードに示すようにビルダー メソッドを使用して他のオプションを設定します。
val uri = "mongodb://localhost:27017/" val settings = MongoClientSettings.builder() .applyConnectionString(ConnectionString(uri)) .applyToSocketSettings(builder => builder.connectTimeout(60000, TimeUnit.MILLISECONDS)) .applyToSslSettings(builder => builder.enabled(true)) .build() val mongoClient = MongoClient(settings)
ネットワーク圧縮
compressors
サーバーとの間で送受信されるワイヤ プロトコル メッセージの圧縮には、次の順でこれらのタイプが推奨されます。ビルド時の任意の依存関係として、"snappy" 、"zlib" 、"zstd" を有効にできます。ドライバーは、サーバーがサポートするこれらの圧縮タイプの最初のものを使用します。
データ型: カンマ区切りの string
デフォルト値: null
例:
val uri = "mongodb://localhost:27017/?compressors=snappy,zstd,zlib" val mongoClient = MongoClient(uri)
zlibCompressionLevel
zlib で使用する圧縮レベル。このオプションは、-1 から 9 までの整数値を受け入れます。
- 1 :(デフォルト)。 zlib はデフォルトの圧縮レベル(通常は
6)を使用します。0 :圧縮なし。
1 :速度は最も速く、圧縮は最小です。
9 :圧縮に最適ですが、速度は最も遅くなります。
データ型: integer
デフォルト値: -1
例:
val uri = "mongodb://localhost:27017/?compressors=zlib&zlibCompressionLevel=3" val mongoClient = MongoClient(uri)
compressors
サーバーとの間で送受信されるワイヤ プロトコル メッセージの圧縮には、次の順でこれらのタイプが推奨されます。ビルド時の任意の依存関係として、"snappy" 、"zlib" 、"zstd" を有効にできます。ドライバーは、サーバーがサポートするこれらの圧縮タイプの最初のものを使用します。
データ型: List[MongoCompressor]
デフォルト値: 空のリスト
例:
val settings = MongoClientSettings.builder() .compressorList(List( MongoCompressor.createSnappyCompressor(), MongoCompressor.createZstdCompressor(), MongoCompressor.createZlibCompressor() ).asJava) .build() val mongoClient = MongoClient(settings)
zlibCompressionLevel
zlib で使用する圧縮レベル。このオプションは、-1 から 9 までの整数値を受け入れます。
- 1 :(デフォルト)。 zlib はデフォルトの圧縮レベル(通常は
6)を使用します。0 :圧縮なし。
1 :速度は最も速く、圧縮は最小です。
9 :圧縮に最適ですが、速度は最も遅くなります。
データ型: integer
デフォルト値: -1
例:
val settings = MongoClientSettings.builder() .compressorList(List( MongoCompressor.createZlibCompressor() .withProperty(MongoCompressor.LEVEL, 3) ).asJava) .build() val mongoClient = MongoClient(settings)
タイムアウト
connectTimeoutMS
タイムアウトする前にドライバーがサーバーへの単一の TCP ソケット接続を確立しようとする時間の長さ。
データ型: integer
デフォルト値: 10000
例:
val uri = "mongodb://localhost:27017/?connectTimeoutMS=10000" val mongoClient = MongoClient(uri)
socketTimeoutMS (非推奨)
このオプションは非推奨です。このタイムアウトは、代わりにクライアントレベルのタイムアウトを設定することで構成できます。
ドライバーがタイムアウトする前にソケット上で送信または受信を試みる時間の長さ。デフォルト値はオペレーティング システムによって設定されます。
データ型: integer
デフォルト値: タイムアウトなし
例:
val uri = "mongodb://localhost:27017/?socketTimeoutMS=5000" val mongoClient = MongoClient(uri)
connectTimeoutMS
タイムアウトする前にドライバーがサーバーへの単一の TCP ソケット接続を確立しようとする時間の長さ。
データ型: integer
デフォルト値: 10000
例:
val settings = MongoClientSettings.builder() .applyToSocketSettings(builder => builder.connectTimeout(10, TimeUnit.SECONDS)) .build() val mongoClient = MongoClient(settings)
socketTimeoutMS (非推奨)
このオプションは非推奨です。このタイムアウトは、代わりにクライアントレベルのタイムアウトを設定することで構成できます。
ドライバーがタイムアウトする前にソケット上で送信または受信を試みる時間の長さ。デフォルト値はオペレーティング システムによって設定されます。
データ型: integer
デフォルト値: タイムアウトなし
例:
val settings = MongoClientSettings.builder() .applyToSocketSettings(builder => builder.readTimeout(5, TimeUnit.SECONDS)) .build() val mongoClient = MongoClient(settings)
サーバーの選択
認証
Tip
認証オプションの詳細については、認証メカニズムセクションを参照してください。
authMechanism
ドライバーがMongoDB Serverに対して認証するために使用するメカニズム。認証メカニズムを指定しない場合、ドライバーはサーバーのバージョンに応じてSCRAM-SHA-1またはSCRAM-SHA-256のいずれかを使用します。
データ型: string
デフォルト値: "SCRAM-SHA-256" MongoDB v4.0 以降に接続する場合
例:
val uri = "mongodb://<username>:<password>@localhost:27017/?authMechanism=SCRAM-SHA-256" val mongoClient = MongoClient(uri)
authMechanismProperties
認証メカニズム固有のオプション。すべての認証メカニズムに必要なわけではありません。
データ型: string
例:
val uri = "mongodb://localhost:27017/?authMechanismProperties=AWS_SESSION_TOKEN:12435" val mongoClient = MongoClient(uri)
authSource
認証するデータベース。
データ型: string
デフォルト値: "admin"
例:
val uri = "mongodb://<username>:<password>@localhost:27017/?authSource=admin" val mongoClient = MongoClient(uri)
username
認証するユーザー名。このオプションが接続 URI に含まれる場合、パーセントエンコードする必要があります。
データ型: string
例:
val uri = "mongodb://myUser:<password>@localhost:27017/" val mongoClient = MongoClient(uri)
パスワード
認証用のパスワード。このオプションが接続 URI に含まれている場合は、パーセントエンコードする必要があります。
データ型: string
例:
val uri = "mongodb://<username>:myPassword@localhost:27017/" val mongoClient = MongoClient(uri)
authMechanism
ドライバーがMongoDB Serverに対して認証するために使用するメカニズム。認証メカニズムを指定しない場合、ドライバーはサーバーのバージョンに応じてSCRAM-SHA-1またはSCRAM-SHA-256のいずれかを使用します。
データ型: string
デフォルト値: "SCRAM-SHA-256" MongoDB v4.0 以降に接続する場合
例:
val settings = MongoClientSettings.builder() .credential(MongoCredential.createScramSha256Credential( "<username>", "<authSource>", "<password>".toCharArray)) .build() val mongoClient = MongoClient(settings)
注意
MongoClientSettings でユーザー名、パスワード、認証ソース、およびメカニズム固有のプロパティを構成するには、適切な MongoCredential ファクトリメソッドを使用します。詳細については、認証メカニズムのガイドを参照してください。
読み取り操作と書込み操作
replicaSet
接続するレプリカセットの名前。
データ型: string
例:
val uri = "mongodb://localhost:27017/?replicaSet=myRS" val mongoClient = MongoClient(uri)
directConnection
すべての操作をホストに強制的にディスパッチするかどうかを指定します。このオプションを指定すると、ドライバーは SRV 接続形式を受け入れません。代わりに標準の接続 URI 形式を使用する必要があります。SRV 接続と標準接続形式の詳細については、MongoDB Server マニュアルの接続文字列ガイドを参照してください。
複数のホスト名を指定する場合、このプロパティを false に設定する必要があります。
データ型: boolean
デフォルト値: false
例:
val uri = "mongodb://localhost:27017/?directConnection=true" val mongoClient = MongoClient(uri)
readPreference
クライアントのデフォルトの読み込み設定 (read preference)。詳細については、MongoDB Server マニュアルの「読み込み設定 (read preference)」を参照してください。
データ型: string
デフォルト値: primary
例:
val uri = "mongodb://localhost:27017/?readPreference=primary" val mongoClient = MongoClient(uri)
ReadConcern
クライアントの読み取り保証 (read concern)。詳細については、MongoDB Server マニュアルの「読み取り保証 (read concern)」を参照してください。
データ型: string
例:
val uri = "mongodb://localhost:27017/?readConcern=majority" val mongoClient = MongoClient(uri)
writeConcern
クライアントの書込み保証 (write concern)。詳細については、MongoDB Server マニュアルの「書込み保証 (write concern)」を参照してください。
データ型: string
例:
val uri = "mongodb://localhost:27017/?writeConcern=majority" val mongoClient = MongoClient(uri)
localThresholdMS
サーバーの選択対象となるレイテンシウィンドウ。サーバーの往復時間が、最速のサーバーの往復時間とこの値を合わせた値より長い場合、そのサーバーは選択対象になりません。
データ型: integer
デフォルト値: 15
例:
val uri = "mongodb://localhost:27017/?localThresholdMS=35" val mongoClient = MongoClient(uri)
replicaSet
接続するレプリカセットの名前。
データ型: string
例:
val settings = MongoClientSettings.builder() .applyToClusterSettings(builder => builder.requiredReplicaSetName("myRS")) .build() val mongoClient = MongoClient(settings)
directConnection
すべての操作をホストに強制的にディスパッチするかどうかを指定します。このオプションを指定すると、ドライバーは SRV 接続形式を受け入れません。代わりに標準の接続 URI 形式を使用する必要があります。SRV 接続と標準接続形式の詳細については、MongoDB Server マニュアルの接続文字列ガイドを参照してください。
複数のホスト名を指定する場合、このプロパティを false に設定する必要があります。
データ型: boolean
デフォルト値: false
例:
val settings = MongoClientSettings.builder() .applyToClusterSettings(builder => builder.mode(ClusterConnectionMode.SINGLE)) .build() val mongoClient = MongoClient(settings)
readPreference
クライアントのデフォルトの読み込み設定 (read preference)。詳細については、MongoDB Server マニュアルの「読み込み設定 (read preference)」を参照してください。
データ型: string
デフォルト値: primary
例:
val settings = MongoClientSettings.builder() .readPreference(ReadPreference.primary()) .build() val mongoClient = MongoClient(settings)
ReadConcern
クライアントの読み取り保証 (read concern)。詳細については、MongoDB Server マニュアルの「読み取り保証 (read concern)」を参照してください。
データ型: string
例:
val settings = MongoClientSettings.builder() .readConcern(ReadConcern.MAJORITY) .build() val mongoClient = MongoClient(settings)
writeConcern
クライアントの書込み保証 (write concern)。詳細については、MongoDB Server マニュアルの「書込み保証 (write concern)」を参照してください。
データ型: string
例:
val settings = MongoClientSettings.builder() .writeConcern(WriteConcern.MAJORITY) .build() val mongoClient = MongoClient(settings)
localThresholdMS
サーバーの選択対象となるレイテンシウィンドウ。サーバーの往復時間が、最速のサーバーの往復時間とこの値を合わせた値より長い場合、そのサーバーは選択対象になりません。
データ型: integer
デフォルト値: 15
例:
val settings = MongoClientSettings.builder() .applyToClusterSettings(builder => builder.localThreshold(35, TimeUnit.MILLISECONDS)) .build() val mongoClient = MongoClient(settings)
詳細情報
接続オプションの完全なリストを表示するには、MongoDB Server マニュアルの「接続文字列オプション」を参照してください。
API ドキュメント
このガイドで言及されているクラスとメソッドについて詳しくは、次の API ドキュメントを参照してください。