Overview
在本指南中,您可以了解如何使用连接string和 MongoClient 对象连接到不同类型的MongoDB部署。
Atlas
要连接到MongoDB 上的Atlas 部署,请在连接string 中包含以下元素:
Atlas 集群的 URL
MongoDB 用户名
MongoDB 密码
然后,将连接字符串传递给 MongoClient.create() 方法。
提示
按照 Atlas驱动程序连接指南检索连接string 。
当您连接到Atlas时,我们建议使用 Stable API客户端选项,以避免Atlas升级到新版本的MongoDB 服务器时发生重大更改。要学习;了解有关 Stable API功能的更多信息,请参阅 Stable API页面。
以下代码展示了如何使用Kotlin驾驶员连接到Atlas 集群。此代码还使用 serverApi 选项来指定 Stable API版本:
// Replace the placeholder with your Atlas connection string val uri = "<connection string>" // Construct a ServerApi instance using the ServerApi.builder() method val serverApi = ServerApi.builder() .version(ServerApiVersion.V1) .build() val settings = MongoClientSettings.builder() .applyConnectionString(ConnectionString(uri)) .serverApi(serverApi) .build() // Create a new client and connect to the server val mongoClient = MongoClient.create(settings) val database = mongoClient.getDatabase("admin") try { // Send a ping to confirm a successful connection val command = Document("ping", BsonInt64(1)) val commandResult = database.runCommand(command) println("Pinged your deployment. You successfully connected to MongoDB!") } catch (me: MongoException) { System.err.println(me) }
本地部署
要连接到本地 MongoDB 部署,请使用localhost作为主机名。 默认情况下, mongod进程在端口27017上运行,但您可以根据部署进行自定义。
以下代码展示了如何使用Kotlin驾驶员连接到本地MongoDB 部署:
import com.mongodb.kotlin.client.coroutine.MongoClient val uri = "mongodb://localhost:27017/" val client = MongoClient.create(uri)
副本集
MongoDB 副本集部署是一组用于存储相同数据集的连接实例。这种实例配置提供了数据冗余和高数据可用性。
要连接到副本集,请指定副本集成员的主机名(或IP地址)和端口号。
如果您无法提供副本集主机的完整列表,则可以指定副本集的一个或多个主机,并指示Kotlin驾驶员执行自动发现以查找其他主机。要指示驾驶员执行自动发现,请执行以下操作之一:
将副本集的名称指定为
replicaSet参数的值。将
false指定为directConnection参数的值。在副本集中指定多个主机。
注意
MongoClient构造函数是非阻塞的。 连接到副本集时,构造函数会立即返回,而客户端会使用后台线程连接到副本集。
如果构造 MongoClient 并立即打印其 nodes 属性的string表示形式,则当客户端连接到副本集成员时,列表可能为空。
以下示例展示如何使用ConnectionString或MongoClientSettings类连接到在三个不同主机的端口27017上运行的MongoDB副本集。 选择与您的首选课程对应的标签页。
val connectionString = ConnectionString("mongodb://host1:27017,host2:27017,host3:27017/") val mongoClient = MongoClient.create(connectionString)
val seed1 = ServerAddress("host1", 27017) val seed2 = ServerAddress("host2", 27017) val seed3 = ServerAddress("host3", 27017) val settings = MongoClientSettings.builder() .applyToClusterSettings { builder -> builder.hosts( listOf(seed1, seed2, seed3) ) } .build() val mongoClient = MongoClient.create(settings)
注意
Docker 中的副本集
当副本集在Docker中运行时,它可能只公开一个MongoDB端点。在这种情况下,无法发现副本集。在连接 URI 中指定 directConnection=false 或未设置此选项,可能会阻止应用程序与之连接。
在测试或开发环境中,您可以通过指定 directConnection=true 来连接到副本集。在生产环境中,我们建议配置集群,以便每个 MongoDB 实例都可以在 Docker 虚拟网络之外访问。
DNS 服务发现
要使用 DNS 服务发现来查找要连接的服务的 DNS SRV记录,请在连接字符串中指定 SRV 连接格式。此外,如果启用SRV 连接格式, Kotlin驾驶员会自动重新扫描新主机,而无需更改客户端配置。
以下代码显示了使用 SRV 连接格式的连接字符串:
val uri = "mongodb+srv://<hostname>/"
要学习;了解有关 SRV 连接格式的更多信息,请参阅MongoDB 服务器手册中的 SRV 连接格式条目。
API 文档
要学习;了解有关在Kotlin驾驶员中创建 MongoClient对象的详情,请参阅以下API文档: