Docs 菜单
Docs 主页
/ / /
Java Reactive Streams 驱动程序
/

选择连接目标

在此页面上

  • Overview
  • Atlas
  • 本地部署
  • 副本集
  • 初始化
  • API 文档

在本指南中,您可以学习;了解如何使用连接string和 MongoClient对象连接到不同类型的MongoDB部署。

要连接到MongoDB 上的Atlas 部署,请在连接string 中包含以下元素:

  • Atlas 集群的 URL

  • MongoDB 用户名

  • MongoDB 密码

然后,将连接string传递给构造 MongoClient对象的 create() 方法。

提示

按照 Atlas驱动程序连接指南检索连接string 。

当您连接到Atlas时,我们建议使用 Stable API客户端选项,以避免Atlas升级到新版本的MongoDB Server时发生重大更改。 要学习;了解有关 Stable API功能的更多信息,请参阅MongoDB Server手册中的Stable API

以下代码展示了如何使用Java Reactive Streams驾驶员连接到Atlas 集群。 代码使用serverApi选项指定 Stable API版本。

重要

Reactor 库方法

本指南使用 Reactor 库中的方法,该库基于 Reactive Streams 规范。要安装 Reactor,请参阅 Reactor 项目文档中的获取 Reactor 。

import com.mongodb.ConnectionString;
import com.mongodb.MongoClientSettings;
import com.mongodb.ServerApi;
import com.mongodb.ServerApiVersion;
import org.bson.BsonDocument;
import org.bson.BsonInt64;
import com.mongodb.reactivestreams.client.MongoClient;
import com.mongodb.reactivestreams.client.MongoClients;
import com.mongodb.reactivestreams.client.MongoDatabase;
import org.bson.conversions.Bson;
import reactor.core.publisher.Mono;
public class testing {
public static void main(String[] args) {
// Replace the placeholder with your Atlas connection string
String uri = "<connection string>";
// Construct a ServerApi instance using the ServerApi.builder() method
ServerApi serverApi = ServerApi.builder()
.version(ServerApiVersion.V1)
.build();
MongoClientSettings settings = MongoClientSettings.builder()
.applyConnectionString(new ConnectionString(uri))
.serverApi(serverApi)
.build();
// Create a new client and connect to the server
try (MongoClient mongoClient = MongoClients.create(settings))
{
MongoDatabase database = mongoClient.getDatabase("<database name>");
Bson command = new BsonDocument("ping", new BsonInt64(1));
Mono.from(database.runCommand(command))
.doOnSuccess(x -> System.out.println("Pinged your deployment. You successfully connected to MongoDB!"))
.doOnError(err -> System.out.println("Error: " + err.getMessage()))
.block();
}
}
}

要连接到本地 MongoDB 部署,请使用localhost作为主机名。 默认情况下, mongod进程在端口27017上运行,但您可以根据部署进行自定义。

以下代码展示了如何使用Java Reactive Streams驾驶员连接到本地MongoDB 部署:

import com.mongodb.reactivestreams.client.MongoClients;
import com.mongodb.reactivestreams.client.MongoClient;
public class MongoConnection {
public static void main(String[] args) {
String uri = "mongodb://localhost:27017/";
try (MongoClient client = MongoClients.create(uri)) {
// use `client` here
}
}
}

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

如果无法提供副本集主机的完整列表,则可以指定副本集集中的一个或多个主机,并指示Java Reactive Streams驾驶员执行自动发现以查找其他主机。 要指示驾驶员执行自动发现,请执行以下操作之一:

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

  • false 指定为 directConnection 参数的值。

  • 在副本集中指定多个主机。

在以下示例中,驱动程序使用样本连接 URI 连接到 MongoDB 副本集 sampleRS,该副本集在三个不同主机(包括 host1)的端口 27017 上运行:

import com.mongodb.reactivestreams.client.MongoClients;
import com.mongodb.reactivestreams.client.MongoClient;
public class MongoConnection {
public static void main(String[] args) {
String uri = "mongodb://localhost:27017/?replicaSet=sampleRS";
try (MongoClient client = MongoClients.create(uri)) {
// use `client` here
}
}
}

注意

create() 是非阻塞的

构造MongoClientcreate()方法是非阻塞的。 当您连接到副本集时,该方法会立即返回,而客户端会使用背景线程连接到副本集。

如果创建 MongoClient 并立即打印其 nodes 属性的string表示形式,则当客户端连接到副本集成员时,列表可能为空。

要初始化副本集,必须直接连接到单个成员。 为此,请将directConnection连接选项设立为True 。 您可以通过以下方式执行此操作:

  • 将参数传递给构造MongoClientcreate()方法

  • 在连接string中设置参数。

import com.mongodb.reactivestreams.client.MongoClients;
import com.mongodb.reactivestreams.client.MongoClient;
public class MongoConnection {
public static void main(String[] args) {
try (MongoClient client =
MongoClients.create("mongodb://<hostname>:<port>", directConnection=True)){
// use `client` here
}
}
}
import com.mongodb.reactivestreams.client.MongoClients;
import com.mongodb.reactivestreams.client.MongoClient;
public class MongoConnection {
public static void main(String[] args) {
String uri = "mongodb://<hostname>:<port>/?directConnection=true";
try (MongoClient client = MongoClients.create(uri)){
// use `client` here
}
}
}

要学习;了解有关在Java Reactive Streams驾驶员中创建MongoClient实例的更多信息,请参阅以下API文档:

后退

创建 MongoClient