Kotlin 驱动快速入门
本页内容
简介
本指南向您展示如何创建一个使用 Kotlin 驱动程序 连接到 MongoDB Atlas 集群 的应用程序。如果您希望使用不同的驱动程序或编程语言连接到 MongoDB,请参阅官方 MongoDB 驱动程序列表.
Kotlin 驱动程序允许您从 Kotlin 应用程序连接到并与 MongoDB 集群进行通信。
MongoDB Atlas 是一种完全托管云数据库服务,可在 MongoDB 集群上托管您的数据。在本指南中,您可以了解如何开始使用您自己的免费集群。
提示
要查看另一个示例,该示例演示了如何构建一个 Kotlin 应用程序,该程序连接到 MongoDB Atlas,请参阅 MongoDB Kotlin 驱动程序入门 开发者教程。
设置您的项目
安装 Kotlin
请确保您的系统已安装并运行 Kotlin,且 JDK 版本为 1.8 或更高。有关 Kotlin/JVM 开发的入门信息,请参考 Kotlin 语言文档中的 开始使用 Kotlin/JVM。
创建项目
本指南展示了如何使用 Gradle 或 Maven 添加 MongoDB Kotlin 驱动依赖项。我们建议您使用集成开发环境(IDE)如 IntelliJ IDEA 或 Eclipse IDE 来配置 Gradle 或 Maven 以构建和运行您的项目。
如果您没有使用IDE,请参阅创建新的Gradle构建指南或构建Maven指南,以获取有关如何设置项目的更多信息。
将MongoDB添加为依赖项
如果您正在使用 Gradle 来管理您的包,请将以下条目添加到您的build.gradle.kts
依赖列表中
dependencies { implementation("org.mongodb:mongodb-driver-kotlin-coroutine:5.2.1") }
如果您正在使用 Maven 来管理您的包,请将以下条目添加到您的 pom.xml
依赖列表中
<dependencies> <dependency> <groupId>org.mongodb</groupId> <artifactId>mongodb-driver-kotlin-coroutine</artifactId> <version>5.2.1</version> </dependency> </dependencies>
配置好依赖后,请运行依赖管理器并在您的 IDE 中刷新项目以确保依赖可用。
添加序列化库依赖
为了使驱动程序能够在 Kotlin 对象和 MongoDB 文档的数据格式 BSON 之间进行转换,您还必须将以下序列化包之一或两个添加到您的应用程序中
bson-kotlinx
(推荐)bson-kotlin
如果您使用Gradle来管理您的包,请将以下之一添加到您的build.gradle.kts
依赖列表中
implementation("org.mongodb:bson-kotlinx:5.2.1") // OR implementation("org.mongodb:bson-kotlin:5.2.1")
如果您使用Maven来管理您的包,请将以下之一添加到您的pom.xml
依赖列表中
<dependency> <groupId>org.mongodb</groupId> <artifactId>bson-kotlinx</artifactId> <version>5.2.1</version> </dependency> <!--OR--> <dependency> <groupId>org.mongodb</groupId> <artifactId>bson-kotlin</artifactId> <version>5.2.1</version> </dependency>
配置好依赖后,请运行依赖管理器并在您的 IDE 中刷新项目以确保依赖可用。
了解更多关于这些包的信息,请参阅Kotlin序列化.
创建MongoDB集群
设置完Kotlin项目的依赖项后,创建一个MongoDB集群,您可以在此集群中存储和管理数据。完成Atlas入门教程,以设置新的Atlas账户、创建和启动免费层MongoDB集群,并加载样本数据集。
完成《Atlas入门》教程中的步骤后,您将在Atlas中部署一个新的MongoDB集群、一个新的数据库用户,并将样本数据加载到您的集群中。
连接到您的集群
此步骤展示了如何创建并运行一个应用程序,该应用程序使用Kotlin驱动程序连接到您的MongoDB集群并在样本数据上执行查询。
首先,您必须在代码中包含一个连接字符串来指定驱动程序如何连接到您的MongoDB集群。此字符串包含有关集群的主机名或IP地址和端口的详细信息,认证机制,用户凭证和其他连接选项。
如果您正在连接到一个不在Atlas上托管实例或集群,请参阅连接指南中的其他连接到MongoDB的方法部分,了解如何格式化您的连接字符串。
要检索您在前面步骤中创建的集群和用户的连接字符串,请登录到您的Atlas账户并导航到以下位置数据库页面下的部署,并点击以下图像中的连接按钮

选择“驱动程序”选项进行连接,并从驱动程序列表中选择Kotlin,从版本下拉菜单中选择4.10或更高版本。
接下来,点击下面的图像中突出显示的复制图标,以将您的连接字符串复制到剪贴板。

将Atlas连接字符串保存在一个安全的位置,以便在下一步中访问。
从您的应用程序查询您的MongoDB集群
接下来,在您的项目中创建一个名为QuickStartDataClassExample.kt
的文件。
将以下示例代码复制到文件中,并将上一步骤中保存的MongoDB Atlas连接字符串的值替换到uri
变量中。将连接字符串中的"<password>"
占位符替换为您为具有atlasAdmin权限的用户设置的密码
import com.mongodb.client.model.Filters.eq import com.mongodb.kotlin.client.coroutine.MongoClient import io.github.cdimascio.dotenv.dotenv import kotlinx.coroutines.flow.firstOrNull import kotlinx.coroutines.runBlocking // Create data class to represent a MongoDB document data class Movie(val title: String, val year: Int, val cast: List<String>) fun main() { // Replace the placeholder with your MongoDB deployment's connection string val uri = CONNECTION_STRING_URI_PLACEHOLDER val mongoClient = MongoClient.create(uri) val database = mongoClient.getDatabase("sample_mflix") // Get a collection of documents of type Movie val collection = database.getCollection<Movie>("movies") runBlocking { val doc = collection.find(eq("title", "Back to the Future")).firstOrNull() if (doc != null) { println(doc) } else { println("No matching documents found.") } } mongoClient.close() }
注意
此示例使用Kotlin数据类来建模MongoDB数据。
当您运行main
函数时,应用程序将打印出与查询匹配的电影文档的详细信息,如下所示输出
Movie( title=Back to the Future, year=1985, cast=[Michael J. Fox, Christopher Lloyd, Lea Thompson, Crispin Glover] )
如果您没有看到任何输出或收到错误,请检查是否在应用程序中包含了正确的连接字符串。另外,请确认您已成功将示例数据集加载到您的MongoDB Atlas集群中。
重要
使用TLS v1.3时的已知连接问题
如果您在连接到MongoDB实例时遇到以下错误,您必须将JDK更新到最新补丁版本
javax.net.ssl.SSLHandshakeException: extension (5) should not be presented in certificate_request
此异常是在使用特定版本的JDK和TLS 1.3协议时出现的问题,但以下JDK版本已修复此问题
JDK 11.0.7
JDK 13.0.3
JDK 14.0.2
为了解决此错误,将JDK更新到上述补丁版本之一或更高版本。
完成此步骤后,您将拥有一个使用Kotlin驱动程序连接到MongoDB集群、运行查询并打印结果的工作应用程序。
使用文档类(替代方法)
上一节演示了如何通过使用 Kotlin 数据类来查询样本集合并获取数据。本节展示了如何使用 Document 类将数据存储和检索到 MongoDB。
在名为 QuickStartDocumentExample.kt
的新文件中,粘贴以下示例代码以在 MongoDB Atlas 中运行查询。将 uri
变量的值替换为您的 MongoDB Atlas 连接字符串
import com.mongodb.client.model.Filters.eq import com.mongodb.kotlin.client.coroutine.MongoClient import io.github.cdimascio.dotenv.dotenv import kotlinx.coroutines.flow.firstOrNull import kotlinx.coroutines.runBlocking import org.bson.Document fun main() { // Replace the placeholder with your MongoDB deployment's connection string val uri = CONNECTION_STRING_URI_PLACEHOLDER val mongoClient = MongoClient.create(uri) val database = mongoClient.getDatabase("sample_mflix") val collection = database.getCollection<Document>("movies") runBlocking { val doc = collection.find(eq("title", "Back to the Future")).firstOrNull() if (doc != null) { println(doc.toJson()) } else { println("No matching documents found.") } } mongoClient.close() }
当您运行main
函数时,应用程序将打印出与查询匹配的电影文档的详细信息,如下所示输出
{ _id: ..., plot: 'A young man is accidentally sent 30 years into the past...', genres: [ 'Adventure', 'Comedy', 'Sci-Fi' ], ... title: 'Back to the Future', ... }
如果您没有看到任何输出或收到错误,请检查是否在应用程序中包含了正确的连接字符串。另外,请确认您已成功将示例数据集加载到您的MongoDB Atlas集群中。
下一步
要了解更多关于 Kotlin 驱动程序的信息,请参阅 基础知识 指南,这些指南详细介绍了相关概念并提供执行不同任务的代码示例。