Java 驱动程序快速入门
在此页面上
简介
本指南介绍如何创建使用 Java 驱动程序连接到 MongoDB Atlas 集群的应用程序。如果希望使用其他驱动程序或编程语言连接 MongoDB,请参阅我们的 MongoDB 官方驱动程序列表。
Java 驱动程序让您可以将 Java 应用程序连接到 MongoDB 集群并与之通信。
MongoDB Atlas 是完全托管的云数据库服务,可在 MongoDB 集群托管数据。 在本指南中,我们将向您介绍 如何开始使用自己的免费(无需信用卡)集群。
请参考以下步骤,将 Java 应用程序与 MongoDB Atlas 集群进行连接。
设立您的项目
安装 Java 开发工具包 (JDK)
确保您的系统安装了 JDK 8 或更新版本。有关如何检查 Java 版本和安装 JDK 的详细信息,请参阅 Oracle JDK 安装概述文档 。
创建项目
本指南将向您展示如何使用 Maven 或 Gradle 来添加 MongoDB Java 驱动程序依赖项。我们建议您使用集成开发环境 (IDE),例如 Intellij IDEA 或 Eclipse IDE,从而更方便地配置 Maven 或 Gradle 来构建并运行您的项目。
如果您未使用 IDE,请参阅构建 Maven 或创建新的 Gradle 构建以详细了解如何设置项目。
添加 MongoDB 作为依赖项
如果使用 Maven,请将以下内容添加到您的 pom.xml
依赖项列表中:
<dependencies> <dependency> <groupId>org.mongodb</groupId> <artifactId>mongodb-driver-sync</artifactId> <version>5.2.0</version> </dependency> </dependencies>
如果使用 Gradle,则将以下内容添加到 build.gradle
依赖项列表中:
dependencies { implementation 'org.mongodb:mongodb-driver-sync:5.2.0' }
注意
我们建议您使用构建工具安装 Java 驱动程序。不过,如果必须下载该驱动程序和依赖项,您可以在 MongoDB Group Maven 存储库 中找到 JAR 文件。Java 驱动程序需要下载 bson
、mongodb-driver-core
和 slf4j-api
依赖项的 JAR 文件。
配置依赖项后,运行依赖项经理并在 IDE 中刷新项目,确保它们可用于您的项目。
创建 MongoDB 集群
在 Atlas 中设置免费级集群
设置 Java 项目依赖项后,创建一个 MongoDB 集群,您可以在其中存储和管理数据。完成Atlas 入门指南,设置新的 Atlas 帐户、创建和启动免费套餐 MongoDB 集群、加载数据集以及与数据交互。
完成 Atlas 指南中的步骤后,您应当在 Atlas 中部署了一个新的 MongoDB 集群、一个新的数据库用户,并且有示例数据集加载到这个集群中。
连接到集群
在此步骤中,我们将创建并运行一个应用程序,该应用程序将使用 MongoDB Java 驱动程序连接到 MongoDB 集群并对示例数据进行查询。
我们会通过名为连接字符串的字符串向驱动程序传递有关如何连接到 MongoDB 集群的指令。此字符串包含有关集群的主机名或 IP 地址和端口、身份验证机制、用户档案(如果适用)以及其他连接选项的信息。
如果要连接到非 Atlas 托管的实例或集群,请参阅连接到 MongoDB 的其他方法,了解如何格式化连接字符串的说明。
要检索在上一步中为集群和用户创建的连接字符串,请登录 Atlas 账户并前往 Database(数据库)部分,然后单击要连接到的集群的 Connect(连接)按钮,如下所示。
继续执行 Connect Your Application(连接应用程序)步骤并选择 Java 驱动程序。选择“4.3 or Later”(4.3 或更高版本)以作为版本。单击 Copy(复制)图标将此连接字符串复制到剪贴板,如下所示。
将您的 Atlas 连接字符串保存在安全的位置,以便您在下一步操作时 能访问到。
从应用程序查询 MongoDB 集群
接下来,在项目的基础包目录中创建一个名为 QuickStart.java
的文件来包含您的应用程序。使用以下样本代码对 MongoDB Atlas 中的样本数据集运行查询,并将 uri
变量的值替换为 MongoDB Atlas 连接字符串。
import static com.mongodb.client.model.Filters.eq; import org.bson.Document; import com.mongodb.client.MongoClient; import com.mongodb.client.MongoClients; import com.mongodb.client.MongoCollection; import com.mongodb.client.MongoDatabase; public class QuickStart { public static void main( String[] args ) { // Replace the placeholder with your MongoDB deployment's connection string String uri = "<connection string uri>"; try (MongoClient mongoClient = MongoClients.create(uri)) { MongoDatabase database = mongoClient.getDatabase("sample_mflix"); MongoCollection<Document> collection = database.getCollection("movies"); Document doc = collection.find(eq("title", "Back to the Future")).first(); if (doc != null) { System.out.println(doc.toJson()); } else { System.out.println("No matching documents found."); } } } }
当您运行QuickStart
类时,它应从样本数据集中输出电影的详细信息,如下所示:
{ _id: ..., plot: 'A young man is accidentally sent 30 years into the past...', genres: [ 'Adventure', 'Comedy', 'Sci-Fi' ], ... title: 'Back to the Future', ... }
如果您没有看到任何输出或错误信息,请检查您的 Java 类中是否包含了正确的连接字符串,并确认是否已将示例数据集加载到您的 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 11.0.7
JDK 13.0.3
JDK 14.0.2
要解决此报错,请将您的 JDK 更新到上述补丁版本之一,或者更高版本。
完成此步骤后,您应得到一个可以正常运行的应用程序。它使用 Java 驱动程序连接到 MongoDB 集群、可以对示例数据进行查询并打印出结果。
使用 POJO(可选)
在上一部分中,您对样本集合运行了查询来检索与地图类似的类 Document
中的数据。在本部分中,可以学习使用自己的普通旧 Java 对象 (POJO) 来在 MongoDB 中存储和检索数据。
在项目的基础包目录中创建名为 Movie.java
的文件,并为包含以下字段、setter 和 getter 的类添加以下代码:
public class Movie { String plot; List<String> genres; String title; public String getPlot() { return plot; } public void setPlot(String plot) { this.plot = plot; } public List<String> getGenres() { return genres; } public void setGenres(List<String> genres) { this.genres = genres; } public String getTitle() { return title; } public void setTitle(String title) { this.title = title; } public String toString() { return "Movie [\n plot=" + plot + ",\n genres=" + genres + ",\n title=" + title + "\n]"; } }
在与项目中的Movie
文件相同的包目录中创建新文件QuickStartPojoExample.java
。使用以下示例代码对 MongoDB Atlas 中的示例数据集运行查询,并将uri
变量的值替换为 MongoDB Atlas 连接字符串。确保将连接字符串的“<db_password>”部分替换为您为具有atlasAdmin权限的用户创建的密码:
import static com.mongodb.MongoClientSettings.getDefaultCodecRegistry; import static com.mongodb.client.model.Filters.eq; import static org.bson.codecs.configuration.CodecRegistries.fromProviders; import static org.bson.codecs.configuration.CodecRegistries.fromRegistries; import org.bson.codecs.configuration.CodecProvider; import org.bson.codecs.configuration.CodecRegistry; import org.bson.codecs.pojo.PojoCodecProvider; import com.mongodb.client.MongoClient; import com.mongodb.client.MongoClients; import com.mongodb.client.MongoCollection; import com.mongodb.client.MongoDatabase; public class QuickStartPojoExample { public static void main(String[] args) { CodecProvider pojoCodecProvider = PojoCodecProvider.builder().automatic(true).build(); CodecRegistry pojoCodecRegistry = fromRegistries(getDefaultCodecRegistry(), fromProviders(pojoCodecProvider)); // Replace the uri string with your MongoDB deployment's connection string String uri = "<connection string uri>"; try (MongoClient mongoClient = MongoClients.create(uri)) { MongoDatabase database = mongoClient.getDatabase("sample_mflix").withCodecRegistry(pojoCodecRegistry); MongoCollection<Movie> collection = database.getCollection("movies", Movie.class); Movie movie = collection.find(eq("title", "Back to the Future")).first(); System.out.println(movie); } } }
当您运行QuickStartPojoExample
类时,它应从示例数据集中输出电影的详细信息,如下所示:
Movie [ plot=A young man is accidentally sent 30 years into the past..., genres=[Adventure, Comedy, Sci-Fi], title=Back to the Future ]
如果您没有看到任何输出或错误信息,请检查您的 Java 类中是否包含了正确的连接字符串,并确认是否已将示例数据集加载到您的 MongoDB Atlas 集群中。
有关使用 POJO 存储和检索数据的更多信息,请参阅以下链接:
后续步骤
通过我们的基础知识 CRUD 指南学习如何使用 Java 驱动程序读取和修改数据,或者通过用法示例学习如何执行常见操作。