文档菜单
文档首页
/ / /
Rust 驱动
/ /

连接指南

本页内容

  • 概述
  • 连接 URI
  • 连接 URI 的组成部分
  • MongoDB 客户端
  • 客户端创建方法
  • 连接示例
  • 其他连接到 MongoDB 的方法
  • 连接到本地机器上的 MongoDB 服务器
  • 连接到副本集

在本指南中,您可以学习如何使用Rust驱动程序连接到MongoDB实例或副本集部署。

本指南包括以下部分

  • 连接URI描述了连接URI及其组成部分

  • MongoDB客户端描述了Client类型以及如何从连接字符串创建客户端

  • 连接示例提供了使用Atlas连接字符串连接到MongoDB的示例

  • 其他连接MongoDB的方式描述了连接不在Atlas上托管的MongoDB部署的方法

连接URI,也称为连接字符串,告诉驱动程序如何连接到MongoDB以及连接时的行为。

以下示例解释了样本连接URI的每个部分

Parts of a connection URI

在这个例子中,我们使用 mongodb 作为协议,它指定了 标准连接字符串格式。如果您希望部署具有更大的灵活性,并且能够在不重新配置客户端的情况下更改服务器,您也可以使用 DNS 种子列表连接格式

如果您使用基于密码的认证,连接字符串中协议之后的部分包含您的用户名和密码。将 user 的占位符替换为您的用户名,将 pass 替换为您的密码。如果您使用不需要用户名和密码的认证机制,则省略此部分连接 URI。

连接字符串中凭据之后的部分指定了 MongoDB 实例的主机名或 IP 地址以及端口。在前面示例中,我们使用 sample.host 作为主机名,使用 27017 作为端口。将这些值替换为指向您的 MongoDB 实例。

连接字符串的最后部分指定了连接和认证选项。在示例中,我们设置了两个连接选项:maxPoolSize=20w=majority

提示

连接选项

要了解设置连接选项的更多信息,请参阅连接选项.

要连接到 MongoDB,您必须创建一个 Client 实例。客户端管理您的连接并运行数据库命令。

提示

重用您的客户端

您可以通过在会话和操作中重用客户端来提高性能。您可以使用相同的 Client 实例执行多个任务,而不是每次都创建一个新的实例。《code class="leafygreen-ui-1l06pbn">Client 类型允许多线程或多异步任务并发使用。

您可以通过向with_options()方法传递一个ClientOptions对象来创建一个使用您的连接字符串和其他客户端选项的客户端。

要指定您的连接URI,将其传递给ClientOptionsparse()方法。要设置任何其他选项,设置ClientOptions结构体的相关字段。

如果您没有指定任何客户端选项,可以通过将连接字符串传递给Client::with_uri_str()方法来创建客户端。

要了解更多关于创建客户端的信息,请参阅客户端with_options().

提示

稳定 API

您可以将稳定API版本作为选项设置,以避免在升级到新服务器版本时出现破坏性更改。

要了解更多关于稳定API功能的信息,请参阅稳定API指南。

以下代码展示了如何创建一个使用Atlas连接字符串和稳定API版本的客户端,连接到MongoDB,并验证连接是否成功。异步API同步API 下的选项卡,以获取相应的连接代码示例。

提示

要了解更多关于异步和同步运行时信息,请参阅异步和同步API指南

use mongodb::{ bson::doc, options::{ ClientOptions, ServerApi, ServerApiVersion }, Client };
#[tokio::main]
async fn main() -> mongodb::error::Result<()> {
// Replace the placeholder with your Atlas connection string
let uri = "<connection string>";
let mut client_options = ClientOptions::parse(uri).await?;
// Set the server_api field of the client_options object to Stable API version 1
let server_api = ServerApi::builder().version(ServerApiVersion::V1).build();
client_options.server_api = Some(server_api);
// Create a new client and connect to the server
let client = Client::with_options(client_options)?;
// Send a ping to confirm a successful connection
client.database("admin").run_command(doc! { "ping": 1 }).await?;
println!("Pinged your deployment. You successfully connected to MongoDB!");
Ok(())
}
use mongodb::{ bson::doc, options::{ ClientOptions, ServerApi, ServerApiVersion }, sync::Client };
fn main() -> mongodb::error::Result<()> {
// Replace the placeholder with your Atlas connection string
let uri = "<connection string>";
let mut client_options = ClientOptions::parse(uri)?;
// Set the server_api field of the client_options object to Stable API version 1
let server_api = ServerApi::builder().version(ServerApiVersion::V1).build();
client_options.server_api = Some(server_api);
// Create a new client and connect to the server
let client = Client::with_options(client_options)?;
// Send a ping to confirm a successful connection
client.database("admin").run_command(doc! { "ping": 1 }).run()?;
println!("Pinged your deployment. You successfully connected to MongoDB!");
Ok(())
}

提示

按照快速入门指南获取您的Atlas连接字符串。

注意

要了解如何连接到Atlas Serverless,请参阅无服务器实例限制页面,以确定您需要的最小驱动程序版本。

如果您必须连接到不在Atlas上托管的单个MongoDB服务器实例或副本集,请参阅以下部分了解如何连接。

如果您必须在本机上运行MongoDB服务器以进行开发,您必须完成以下步骤

  1. 按照安装MongoDB教程在您的机器上安装MongoDB服务器。选择适合您机器和操作系统的相应安装教程。

  2. 安装完成后,启动服务器。

重要

始终确保您的服务器免受恶意攻击。请参阅安全检查清单以获取安全建议列表。

在成功启动MongoDB服务器后,按照以下步骤连接到您的本地实例

  1. 上一个示例中存储在uri变量中的连接字符串替换为您的本地MongoDB实例的连接字符串。

    如果您的MongoDB服务器正在本地运行,您可以使用以下连接字符串连接到MongoDB

    mongodb://localhost:<port>

    在这个连接字符串中,<port> 是您配置服务器监听传入连接的端口号。

  2. 运行连接代码。如果代码执行成功,您应该在控制台看到以下输出

    Pinged your deployment. You successfully connected to MongoDB!

提示

另请参阅

要了解更多有关连接字符串和自定义格式的信息,请参阅服务器手册中的 连接字符串

MongoDB 副本集部署是一组连接的实例,或节点,其中节点存储相同的数据集。这种实例配置提供数据冗余和高数据可用性。

要连接到副本集部署,请指定每个实例的主机名和端口号,以逗号分隔,并在连接字符串中的 replicaSet 参数中指定副本集名称。

在以下示例中,主机名分别是 host1host2host3,端口号都是 27017。副本集名称是 myRS。以下代码显示了具有这些规范的副本集的连接 URI

mongodb://host1:27017,host2:27017,host3:27017/?replicaSet=myRS

连接到副本集时,驱动程序默认执行以下操作

  • 当给出任何成员的地址时,发现所有副本集成员。

  • 将操作发送到适当的成员,例如对 主节点 的写操作。要了解更多关于副本集主节点的信息,请参阅服务器手册中的 副本集主节点

提示

您只需要指定一个主机来连接到副本集。但是,为了确保在指定的主机不可用时仍能保持连接,请提供完整的主机列表。

要强制在连接 URI 中指定的主机上进行操作,请指定 directConnection 选项。直接连接显示以下行为

  • 不支持 SRV 字符串。

  • 当指定的主机不是主节点时,写入操作会失败。

  • 当指定的主机不是主成员时,它们要求您指定一个辅助读取偏好。要了解更多关于这些副本集成员的信息,请参阅服务器手册中的副本集辅助成员

返回

连接