文档菜单
文档首页
/ / /
Java 同步驱动程序

Java 驱动程序快速入门

本页内容

  • 介绍
  • 设置您的项目
  • 安装 Java 开发工具包 (JDK)
  • 创建项目
  • 将 MongoDB 添加为依赖项
  • 创建 MongoDB 集群
  • 在Atlas中设置免费层集群
  • 从您的应用程序查询MongoDB集群
  • 与POJOs一起工作(可选)
  • 下一步

本指南向您展示如何创建一个使用 Java驱动程序 连接到 MongoDB Atlas集群 的应用程序。如果您希望使用不同的驱动程序或编程语言连接到MongoDB,请参阅我们的官方MongoDB驱动程序列表.

Java驱动程序允许您从Java应用程序连接到并与其他MongoDB集群通信。

MongoDB Atlas是一个完全托管的云数据库服务,它在MongoDB集群上托管您的数据。在本指南中,我们向您展示如何开始使用您自己的免费(无需信用卡)集群。

请咨询以下步骤,将您的Java应用程序与MongoDB Atlas集群连接起来。

确保您的系统已安装 JDK 8 或更高版本。有关如何检查 Java 版本和安装 JDK 的更多信息,请参阅Oracle JDK 安装文档概述

本指南向您展示如何使用 Maven 或 Gradle 添加 MongoDB Java 驱动程序依赖项。我们建议您使用集成开发环境 (IDE) 例如 Intellij IDEA 或 Eclipse IDE,以便更方便地配置 Maven 或 Gradle 以构建和运行您的项目。

如果您不使用集成开发环境(IDE),请参阅构建 Maven创建新的 Gradle 构建 了解如何设置您的项目。

如果您正在使用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驱动程序需要下载bsonmongodb-driver-coreslf4j-api依赖项的JAR文件。

一旦您配置了依赖项,请运行依赖项管理器并刷新您IDE中的项目,以确保它们对您的项目可用。

在设置Java项目依赖项后,创建一个MongoDB集群,用于存储和管理您的数据。完成Atlas入门指南以设置新的Atlas账户,创建和启动免费层MongoDB集群,加载数据集,并交互数据。

完成Atlas指南中的步骤后,您应该在Atlas中部署了一个新的MongoDB集群,一个新数据库用户,并将样本数据集加载到您的集群中。

在此步骤中,我们创建并运行一个使用MongoDB Java驱动程序连接到您的MongoDB集群并查询样本数据的应用程序。

我们通过一个名为连接字符串的字符串将连接指令传递给驱动程序。此字符串包含有关集群的主机名或IP地址和端口的详细信息,身份验证机制,当适用时,用户凭据和其他连接选项。

如果您正在连接到一个不由Atlas托管实例或集群,请参阅其他连接到MongoDB的方法以了解如何格式化您的连接字符串。

要获取您在之前步骤中创建的集群和用户的连接字符串,请登录您的Atlas账户并导航到数据库部分,然后点击您想连接的集群的连接,如下所示。

Atlas Connection GUI cluster selection screen

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

Atlas Connection GUI connection string screen

将您的Atlas连接字符串保存在安全位置,以便在下一步中访问。

接下来,在项目的根包目录下创建一个名为 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集群、运行示例数据集的查询并打印出结果的工作应用程序。

在上一个部分中,您在示例集合上运行了查询以检索类似于 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;
}
@Override
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驱动程序读取和修改数据,或者在使用示例中执行常见操作。

返回

MongoDB Java驱动程序