连接指南
概述
在本指南中,您可以学习如何使用Rust驱动程序连接到MongoDB实例或副本集部署。
本指南包括以下部分
连接URI描述了连接URI及其组成部分
MongoDB客户端描述了
Client
类型以及如何从连接字符串创建客户端连接示例提供了使用Atlas连接字符串连接到MongoDB的示例
其他连接MongoDB的方式描述了连接不在Atlas上托管的MongoDB部署的方法
连接URI
连接URI,也称为连接字符串,告诉驱动程序如何连接到MongoDB以及连接时的行为。
连接URI的组成部分
以下示例解释了样本连接URI的每个部分

在这个例子中,我们使用 mongodb
作为协议,它指定了 标准连接字符串格式。如果您希望部署具有更大的灵活性,并且能够在不重新配置客户端的情况下更改服务器,您也可以使用 DNS 种子列表连接格式。
如果您使用基于密码的认证,连接字符串中协议之后的部分包含您的用户名和密码。将 user
的占位符替换为您的用户名,将 pass
替换为您的密码。如果您使用不需要用户名和密码的认证机制,则省略此部分连接 URI。
连接字符串中凭据之后的部分指定了 MongoDB 实例的主机名或 IP 地址以及端口。在前面示例中,我们使用 sample.host
作为主机名,使用 27017
作为端口。将这些值替换为指向您的 MongoDB 实例。
连接字符串的最后部分指定了连接和认证选项。在示例中,我们设置了两个连接选项:maxPoolSize=20
和 w=majority
。
MongoDB 客户端
要连接到 MongoDB,您必须创建一个 Client
实例。客户端管理您的连接并运行数据库命令。
提示
重用您的客户端
您可以通过在会话和操作中重用客户端来提高性能。您可以使用相同的 Client
实例执行多个任务,而不是每次都创建一个新的实例。《code class="leafygreen-ui-1l06pbn">Client 类型允许多线程或多异步任务并发使用。
客户端创建方法
您可以通过向with_options()
方法传递一个ClientOptions
对象来创建一个使用您的连接字符串和其他客户端选项的客户端。
要指定您的连接URI,将其传递给ClientOptions
的parse()
方法。要设置任何其他选项,设置ClientOptions
结构体的相关字段。
如果您没有指定任何客户端选项,可以通过将连接字符串传递给Client::with_uri_str()
方法来创建客户端。
要了解更多关于创建客户端的信息,请参阅客户端和with_options().
连接示例
以下代码展示了如何创建一个使用Atlas连接字符串和稳定API版本的客户端,连接到MongoDB,并验证连接是否成功。异步API 或 同步API 下的选项卡,以获取相应的连接代码示例。
提示
要了解更多关于异步和同步运行时信息,请参阅异步和同步API指南。
use mongodb::{ bson::doc, options::{ ClientOptions, ServerApi, ServerApiVersion }, Client }; 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,请参阅无服务器实例限制页面,以确定您需要的最小驱动程序版本。
连接到MongoDB的其他方法
如果您必须连接到不在Atlas上托管的单个MongoDB服务器实例或副本集,请参阅以下部分了解如何连接。
连接到本地机器上的MongoDB服务器
如果您必须在本机上运行MongoDB服务器以进行开发,您必须完成以下步骤
按照安装MongoDB教程在您的机器上安装MongoDB服务器。选择适合您机器和操作系统的相应安装教程。
安装完成后,启动服务器。
重要
始终确保您的服务器免受恶意攻击。请参阅安全检查清单以获取安全建议列表。
在成功启动MongoDB服务器后,按照以下步骤连接到您的本地实例
将上一个示例中存储在
uri
变量中的连接字符串替换为您的本地MongoDB实例的连接字符串。如果您的MongoDB服务器正在本地运行,您可以使用以下连接字符串连接到MongoDB
mongodb://localhost:<port> 在这个连接字符串中,
<port>
是您配置服务器监听传入连接的端口号。运行连接代码。如果代码执行成功,您应该在控制台看到以下输出
Pinged your deployment. You successfully connected to MongoDB!
连接到副本集
MongoDB 副本集部署是一组连接的实例,或节点,其中节点存储相同的数据集。这种实例配置提供数据冗余和高数据可用性。
要连接到副本集部署,请指定每个实例的主机名和端口号,以逗号分隔,并在连接字符串中的 replicaSet
参数中指定副本集名称。
在以下示例中,主机名分别是 host1
、host2
和 host3
,端口号都是 27017
。副本集名称是 myRS
。以下代码显示了具有这些规范的副本集的连接 URI
mongodb://host1:27017,host2:27017,host3:27017/?replicaSet=myRS
连接到副本集时,驱动程序默认执行以下操作
当给出任何成员的地址时,发现所有副本集成员。
将操作发送到适当的成员,例如对 主节点 的写操作。要了解更多关于副本集主节点的信息,请参阅服务器手册中的 副本集主节点。
提示
您只需要指定一个主机来连接到副本集。但是,为了确保在指定的主机不可用时仍能保持连接,请提供完整的主机列表。
直接连接
要强制在连接 URI 中指定的主机上进行操作,请指定 directConnection
选项。直接连接显示以下行为
不支持 SRV 字符串。
当指定的主机不是主节点时,写入操作会失败。
当指定的主机不是主成员时,它们要求您指定一个辅助读取偏好。要了解更多关于这些副本集成员的信息,请参阅服务器手册中的副本集辅助成员。