指定连接选项
概述
本节描述了Kotlin Sync驱动程序中可用的MongoDB连接和身份验证选项。您可以通过设置连接URI或MongoClientSettings
实例中的选项来配置您的连接。
在连接URI中设置选项
如果您将连接URI传递给MongoClient.create()
方法,您可以在字符串中以<name>=<value>
对的形式包含连接选项。在以下示例中,连接URI包含值为60000
的connectTimeoutMS
选项和值为true
的tls
选项
val uri = "mongodb://<hostname>:<port>/?connectTimeoutMS=60000&tls=true" val mongoClient = MongoClient.create(uri)
在MongoClientSettings中设置选项
您可以使用MongoClientSettings.Builder
类中的方法在MongoClientSettings
实例中设置连接选项,然后将设置对象传递给MongoClient.create()
方法。
以这种方式配置连接可以使在运行时更改设置更加容易,并且有助于您在编译时捕获错误。
以下示例显示了在创建 MongoClientSettings
实例时如何指定您的连接目标和设置其他选项。
val settings = MongoClientSettings.builder() .applyToClusterSettings { builder -> builder.hosts(listOf(ServerAddress("localhost", 27017))) } .applyToSocketSettings { builder -> builder.connectTimeout(60000, TimeUnit.MILLISECONDS) } .applyToSslSettings { builder -> builder.enabled(true) } .build() val mongoClient = MongoClient.create(settings)
如果您更愿意提供连接字符串而不是指定主机名和端口号,可以使用 applyConnectionString()
方法,然后使用构建器方法设置其他选项,如下面的代码所示。
val uri = "<connection string>" val settings = MongoClientSettings.builder() .applyConnectionString(ConnectionString(uri)) .applyToSocketSettings { builder -> builder.connectTimeout(60000, TimeUnit.MILLISECONDS) } .applyToSslSettings { builder -> builder.enabled(true) } .build() val mongoClient = MongoClient.create(settings)
连接选项
以下各节描述了 Kotlin 同步驱动器中可用的连接选项。每个选项都显示了您可以在连接 URI 中使用的选项-值对,以及如果可用,则在 MongoClientSettings
实例中设置它的驱动器方法。
网络压缩
连接选项 | 描述 |
---|---|
compressors | 按顺序排列的首选压缩类型,用于发送到或从服务器接收的线协议消息。驱动器使用服务器支持的第一种压缩类型。 数据类型:以逗号分隔的字符串 MongoClientSettings: compressorList(listOf(<MongoCompressor>)) 连接 URI: compressors=snappy,zstd,zlib |
zlibCompressionLevel | zlib要使用的压缩级别。此选项接受介于 -1 和 9 之间的整数值,对应以下设置- -1:(默认)。zlib使用其默认压缩级别(通常为 6 )。- 0:不压缩。 - 1:最快速度但压缩程度最低。 - 9:最佳压缩但速度最慢。 数据类型:整数 默认值: -1 MongoClientSettings: compressorList(listOf(zlib.withProperty(MongoCompressor.LEVEL, 3))) 连接 URI: zlibCompressionLevel=3 |
超时
连接选项 | 描述 | |||
---|---|---|---|---|
connectTimeoutMS | 尝试连接并在超时之前的时间(毫秒)。 数据类型:整数 默认值: 10000 MongoClientSettings:
连接 URI: timeoutMs=10000 | |||
socketTimeoutMS | 在尝试发送或接收连接并在尝试超时之前的时间(毫秒)。 数据类型:整数 默认值: 没有超时 MongoClientSettings:
连接 URI: socketTimeoutMS=5000 |
服务器选择
连接选项 | 描述 | |||
---|---|---|---|---|
serverSelectionTimeoutMS | 驱动程序在抛出异常之前,等待服务器选择成功的最大时间(毫秒)。 数据类型:整数 默认值: 30000 MongoClientSettings:
连接 URI: serverSelectionTimeoutMS=30000 |
身份验证
连接选项 | 描述 | |||
---|---|---|---|---|
authMechanism | Kotlin 同步驱动程序用于对应用程序进行身份验证的机制。 数据类型: 字符串 默认值: 当连接到 MongoDB v4.0 或更高版本时为 "SCRAM-SHA-256" MongoClientSettings:
连接 URI: authMechanism=SCRAM-SHA-256 | |||
authMechanismProperties | 特定于身份验证机制的选项。此选项并非对所有身份验证机制都需要。 数据类型: 字符串 连接 URI: authMechanismProperties=AWS_SESSION_TOKEN:12435 | |||
authSource | 用于身份验证的数据库。 数据类型: 字符串 默认值: "admin" 连接 URI: authSource=admin | |||
用户名 | 用于认证的用户名。当此选项包含在连接URI中时,必须对它进行百分号编码。 数据类型: 字符串 连接URI: username=my+user | |||
密码 | 用于认证的密码。当此选项包含在连接URI中时,必须对它进行百分号编码。 数据类型: 字符串 连接URI: password=strong+password |
读写操作
要了解如何连接到不同类型的MongoDB部署,请参阅选择连接目标指南。
连接选项 | 描述 | |||
---|---|---|---|---|
replicaSet | 指定要连接的副本集的名称。 数据类型: 字符串 连接URI: replicaSet=myRS | |||
directConnection | 是否只连接到副本集的主成员。 数据类型: boolean 默认值: false MongoClientSettings:
连接URI: directConnection=true | |||
readPreference | 指定客户端的读取偏好。有关更多信息,请参阅服务器手册中的读取偏好。 数据类型: 字符串 默认值: primary MongoClientSettings: readPreference(ReadPreference.primary()) 连接URI: readPreference=primary | |||
readConcern | 指定客户端的读取关注点。有关更多信息,请参阅服务器手册中的读取关注点。 数据类型: 字符串 MongoClientSettings: readConcern(ReadConcern.MAJORITY) 连接URI: readConcern=majority | |||
writeConcern | 指定客户端的写入关注点。有关更多信息,请参阅服务器手册中的写入关注点。 数据类型: 字符串 MongoClientSettings: writeConcern(WriteConcern.MAJORITY) 连接URI: writeConcern=majority | |||
localThresholdMS | 副本集成员资格的延迟窗口。如果一个成员的往返ping时间超过最快服务器的往返ping时间加上此值,则服务器不符合选择条件。 数据类型:整数 默认值: 15 MongoClientSettings:
连接URI: localThresholdMS=35 |
附加信息
要查看完整的连接选项列表,请参阅服务器手册中的连接字符串。
API 文档
要了解更多关于本指南中提到的类和方法,请参阅以下API文档