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.1</version> </dependency> </dependencies>
如果您正在使用Gradle,请在您的 build.gradle
依赖列表中添加以下内容
dependencies { implementation 'org.mongodb:mongodb-driver-sync:5.2.1' }
注意
我们建议您使用构建工具,例如Maven或Gradle,来安装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集群并查询样本数据的应用程序。
我们通过一个名为连接字符串的字符串将连接指令传递给驱动程序。此字符串包含有关集群的主机名或IP地址和端口的详细信息,身份验证机制,当适用时,用户凭据和其他连接选项。
如果您正在连接到一个不由Atlas托管实例或集群,请参阅其他连接到MongoDB的方法以了解如何格式化您的连接字符串。
要获取您在之前步骤中创建的集群和用户的连接字符串,请登录您的Atlas账户并导航到数据库部分,然后点击您想连接的集群的连接,如下所示。

转到连接您的应用程序步骤,选择Java驱动程序。选择“4.3或更高版本”作为版本。点击复制图标以将连接字符串复制到您的剪贴板,如下所示。

将您的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
的文件,并为包含以下字段、设置器和获取器的类添加以下代码
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存储和检索数据的更多信息,请参阅以下链接:
下一步操作
在我们的Fundamentals CRUD指南中学习如何使用Java驱动程序读取和修改数据,或者在使用示例中执行常见操作。