选择连接目标
Overview
在本指南中,您可以学习;了解如何使用连接string和 MongoClient
对象连接到不同类型的MongoDB部署。
Atlas
要连接到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 库方法
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() 是非阻塞的
构造MongoClient
的create()
方法是非阻塞的。 当您连接到副本集时,该方法会立即返回,而客户端会使用背景线程连接到副本集。
如果创建 MongoClient
并立即打印其 nodes
属性的string表示形式,则当客户端连接到副本集成员时,列表可能为空。
初始化
要初始化副本集,必须直接连接到单个成员。 为此,请将directConnection
连接选项设立为True
。 您可以通过以下方式执行此操作:
将参数传递给构造
MongoClient
的create()
方法在连接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 } } }
API 文档
要学习;了解有关在Java Reactive Streams驾驶员中创建MongoClient
实例的更多信息,请参阅以下API文档: