

Gurpreet Singh
安全性软件工程师
2020 年 4 月 29 日
由于 Rust 的高性能和高安全性,尤其是安全的并发性,使得它在 Microsoft 内部和外部都变得越来越流行。在本教程中,我们将编写一个 Rust 应用程序,以使用 Azure Cosmos DB 针对 Mongo DB 的 API 来创建数据并对数据执行读取、更新和删除 (CRUD) 操作。
您的计算机上已安装 rust
已订阅 Azure
拥有 Azure Cosmos DB 帐户
VS Code、Sublime 或您喜欢的代码编辑器
rust
https://www.rust-lang.org/tools/install
已订阅 Azure
https://azure.microsoft.com/en-us/free/
拥有 Azure Cosmos DB 帐户
https://docs.microsoft.com/en-us/azure/cosmos-db/create-mongodb-golang#create-a-database-account
VS Code
https://code.visualstudio.com/
Sublime
https://www.sublimetext.com/
从 github 克隆示例应用程序,并在运行该应用程序之前更新连接字符串。
github
https://aka.ms/AA8qqur
1.在 Windows 终端或 git bash 中,运行以下命令以克隆 github 存储库
git clone
https://github.com/Azure-Samples/azure-cosmos-db-mongodb-rust-getting-started
2.导航到示例应用程序目录,并构建代码以下载所有依赖项
cargo build
注意:请勿现在运行应用程序。
运行应用程序之前,请更新 main.rs 文件中的连接字符串。
1.要获取您的 Azure Cosmos DB 帐户的连接字符串,请导航到 Azure 门户并转到您的 Azure Cosmos DB 帐户
2.单击左侧导航菜单中的“连接字符串”,然后复制其中一个连接字符串,如屏幕截图所示。
注意:仔细检查是否已启用 SSL(Azure Cosmos DB 会拒绝不安全的传入连接)。

使用 Azure 门户查找 Azure Cosmos DB 的连接字符串
3.在同一应用程序中,打开 src/ 目录下的 main.rs 文件,更新连接字符串(参见前面的步骤)、数据库名称和集合名称,如下面的代码片段所示

4.保存 main.rs 文件
在本节中,我们将逐步浏览一些代码片段,以了解如何在 rust 代码中创建数据库资源。
此 rust 应用程序使用 mongodb rust 驱动程序和 bson(用于序列化/反序列化数据)。
mongodb
https://docs.rs/mongodb/0.9.2/mongodb/
bson
https://docs.rs/bson/0.14.1/bson/
将 rust 应用程序连接到 Azure Cosmos DB
以下代码片段 (src/db.rs) 使用提供的连接字符串将 rust 应用程序连接到 Azure Cosmos DB。
在下面的代码片段中,结构体 MongoClient 具有一个 connect 函数,该函数采用连接字符串并使用 mongodb rust 驱动程序中的 ClientOptions 和 Client 结构体与 Azure Cosmos DB 服务器建立连接。
mongodb
https://docs.rs/mongodb/0.9.2/mongodb/
ClientOptions
https://aka.ms/AA8qxqn
Client
https://docs.rs/mongodb/0.9.2/mongodb/struct.Client.html

(可选)您可以指定要在 src / main.rs 文件中存储/检索文档的数据库和集合。

创建文档
以下代码片段显示如何在 rust 应用程序中创建文档。
在 main.rs 中,使用适当的值初始化 InsertableTask 结构体对象。

src/db.rs 中定义了将文档插入集合的代码。如果成功插入,该函数将返回在集合中创建的新文档的 documentId。

读取文档
以下代码片段显示如何从集合中读取文档。
在 main.rs 中,指定筛选文档的关键字。在下面的示例中,我们将检索包含值“Pay AmeX bill”的关键字“title”的文档。

在 db.rs 中,read 函数采用筛选器,如果集合中有匹配文档,则返回该文档。

更新文档
在 main.rs 中,修改之前创建的 InsertableTask 并将其传递给 update 函数。

在 db.rs 中,update 函数采用筛选器(用于要更新的文档)和已更新的文档作为参数。如果成功更新,该函数将返回更新的文档数。
删除文档
在 main.rs 中,为要删除的文档指定筛选器。

在 db.rs 中,delete 函数采用文档筛选器并返回已删除文档的数量。

1.确保 rust 已安装并且可以从终端/命令提示符下调用。运行 cargo build 进行验证。
2.main.rs 文件中的代码会逐一运行所有 CRUD 操作。因此,为了确保应用程序成功插入文档,请注释掉用于删除文档的代码行(第 67-71 行)。
3.在终端/命令提示符中,导航到 Cargo.toml 文件所在的应用程序的根目录,然后运行以下命令:
cargo run
如果成功,应用程序将在控制台上记录结果。
4.在 Azure Cosmos DB 数据资源管理器中查看文档,以确保文档是否成功插入。

Azure 数据资源管理器








