文档菜单
文档首页
/ / /
Kotlin 协程
/ /

连接到 MongoDB

在本指南中,您可以学习如何使用Kotlin驱动连接到MongoDB实例或副本集。

您可以通过以下示例代码连接到Atlas集群或继续阅读以了解更多关于MongoClient类和连接URI的信息。

您可以使用MongoClient类连接到并与MongoDB进行通信。

使用MongoClient.create()方法构建一个MongoClient

重要

重用客户端

由于每个MongoClient都代表一个线程安全的连接池,大多数应用程序只需要一个MongoClient实例,即使在多个线程之间也是如此。

有关驱动程序中连接池的工作原理的更多信息,请参阅常见问题解答页面.

所有资源使用限制,如最大连接数,均适用于单个MongoClient实例。

有关您可以使用来控制MongoClient行为的各种设置的更多信息,请参阅MongoClient 设置指南。

提示

当实例不再需要时,始终调用MongoClient.close()以清理资源。

连接URI提供了一组指令,驱动程序使用这些指令连接到MongoDB部署。它指导驱动程序如何连接到MongoDB,以及连接时应该如何行为。以下图解解释了示例连接URI的每个部分。

Connection String parts figure

本图使用的是标准连接字符串格式,使用mongodb作为协议。如果您希望有更灵活的部署能力以及能够在不重新配置客户端的情况下更改服务器,也可以使用DNS种子列表连接格式,即mongodb+srv

注意

如果您的部署在MongoDB Atlas上,请参阅Atlas驱动连接指南并选择Kotlin从语言下拉菜单中检索您的连接字符串。

连接URI的下一部分包含您的凭据,如果您使用的是基于密码的认证机制。将user的值替换为您数据库的用户名,将pass替换为您的数据库用户的密码。如果您的认证机制不需要凭据,请省略连接URI的这一部分。

连接URI的下一部分指定了您的MongoDB实例的主机名或IP地址,以及端口。在示例中,sample.host表示主机名,27017是端口号。将这两个值替换为您自己的MongoDB实例。

连接URI的最后一部分包含作为参数的连接选项。在示例中,我们设置了两个连接选项:maxPoolSize=20w=majority。有关连接选项的更多信息,请参阅本指南的连接选项部分。

要连接到Atlas上的MongoDB部署,创建一个客户端。您可以通过将MongoClientSettings对象传递给MongoClient.create()方法来创建使用您的连接字符串和其他客户端选项的客户端。

要实例化一个MongoClientSettings对象,使用构建器方法指定您的连接字符串和其他客户端选项,然后调用build()方法。将applyConnectionString()方法链接到构建器以指定您的连接URI。

您可以将稳定API版本客户端选项设置为避免在升级到新服务器版本时出现破坏性更改。有关稳定API功能的更多信息,请参阅稳定API页面

以下代码演示了如何在连接到Atlas上的MongoDB部署时指定连接字符串和稳定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)
}

如果您要连接到非 Atlas 托管的单个 MongoDB 服务器实例或副本集,请参阅以下部分了解如何连接。

如果您需要在本地上运行 MongoDB 服务器进行开发,而不是使用 Atlas 集群,则需要完成以下操作

  1. 下载 MongoDB 服务器的社区企业版本。

  2. 安装和配置 MongoDB 服务器。

  3. 启动服务器。

重要

始终确保您的 MongoDB 服务器免受恶意攻击。请参阅我们的安全清单以获取安全建议列表。

在成功启动 MongoDB 服务器后,在驱动程序连接代码中指定您的连接字符串。

如果您的 MongoDB 服务器在本地运行,您可以使用连接字符串 "mongodb://localhost:<port>",其中 <port> 是您配置服务器监听传入连接的端口号。

如果您需要指定不同的主机名或 IP 地址,请参阅我们的服务器手册中的连接字符串部分。

为了测试您是否可以连接到您的服务器,请将连接字符串替换为连接到 MongoDB Atlas代码示例,并运行它。

MongoDB副本集部署是一组连接的实例,它们存储相同的数据集。这种实例配置提供了数据冗余和高数据可用性。

要连接到副本集部署,请指定副本集成员的主机名(或IP地址)和端口号。

如果您无法提供副本集中所有主机列表,您可以指定一个或多个副本集主机,并指示驱动器以以下方式之一执行自动发现

  • 将副本集名称指定为replicaSet参数的值

  • false指定为directConnection参数的值

  • 指定副本集中多个主机

提示

虽然您可以指定副本集中主机的子集,但请确保包括副本集中的所有主机,以确保驱动器能够在其中一台主机不可达时建立连接。

以下示例展示了如何使用ConnectionStringMongoClientSettings类将多个主机指定给MongoClient实例。选择与您首选类对应的选项卡。

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)

返回

连接指南