公告推出MongoDB 8.0,史上最快的MongoDB!了解更多 >>推出MongoDB 8.0,史上最快的MongoDB!>>

Rust & MongoDB

Rust 可以连接到任何 MongoDB 实例,包括 MongoDB Atlas。为了实验 Rust,你可以在 MongoDB Atlas 中尝试创建一个集群。

Rust 是一种近年来越来越受欢迎的编程语言。它是一种静态类型语言,专注于效率和速度。

MongoDB 为大多数现代编程语言提供了驱动程序,包括连接你的 Rust 应用程序到任何 MongoDB 集群的本地驱动程序,例如 MongoDB Atlas 上的服务器,MongoDB 的数据库即服务。

本文将介绍使用 Rust 的主要优势以及如何使用它来访问 MongoDB 中的数据库。

目录

Rust 编程语言是什么?

Rust 是一种静态类型编程语言,用于充分利用您可用的资源。它是一种编写 CLI(命令行界面)工具、嵌入式设备应用程序或任何需要访问系统资源的应用程序(如网页浏览器)的优秀编程语言。

Rust 是由 Mozilla 员工 Graydon Hoare 在 2006 年创建的。从那时起,该语言已经发展到了现在的形式。2009 年,Mozilla 正式开始赞助该项目。第一个稳定版本(v1.0)在 2015 年发布。从那时起,每六周就会发布一个新版本。

使用 Rust 的好处是什么?

Rust 在软件开发人员中越来越受欢迎。尽管其框架生态系统不如其他语言成熟,但 Rust 仍然提供了许多好处。

它通常作为 C/C++ 的替代品使用,因为 Rust 为软件开发人员提供了许多好处,例如零成本抽象、内存管理、对并发性的支持以及其周围的庞大和活跃社区。

零成本抽象

简单地说,因为 Rust 在编译时而不是在运行时跟踪内存,所以代码始终编译成相同的汇编代码。

这种编译器优化意味着无论您使用底层代码还是多个抽象层,资源使用上的差异几乎可以忽略不计。

内存管理

作为软件开发人员,您可能需要对自己的应用程序的内存管理有低级控制。这样做可能会造成内存问题,导致性能下降。

Rust 的内存管理跟踪内存中哪些变量。然后它知道何时数据不再需要,并立即释放所使用的内存。这种所有权系统消除了垃圾收集的需要,并减少了应用程序的资源开销。

对并发性的支持

使用Rust的另一个显著优势是内置的多线程支持。

Rust的所有权系统帮助在编译时管理内存。这个系统确保只有一个变量可以拥有特定数据。这种所有权可以防止第二个线程操作相同的数据,从而在第一个线程读取时修改变量的内容。这个系统避免了可能导致应用程序出现致命错误的数据竞争。

活跃的社区

Rust对于初学者来说学习曲线较为陡峭。然而,它也拥有一个伟大的社区,用户愿意互相帮助。

您可用的资源包括Discord频道、活跃的官方论坛以及优秀的文档

该项目由一群专注的贡献者积极维护,并得到Mozilla基金会的支持。

你可以使用 Rust 与 MongoDB 一起使用吗?

您可以通过使用Rust驱动程序来与MongoDB一起使用,该驱动程序可在驱动程序页面上找到。要开始使用Rust和MongoDB,您可以将mongodb crate添加到您的依赖项中,然后就可以开始了。按照入门指南学习如何连接到您的Atlas集群并执行CRUD(创建、读取、更新和删除)操作。

MongoDB使用BSON存储数据,并将数据转换为JSON以使其可读。许多编程语言,如JavaScript,可以直接使用JSON格式。遗憾的是,这种JSON格式及其动态模式与Rust的静态类型系统不太兼容。为了缓解这个问题,mongodb依赖项包含了带有生成BSON文档帮助器的bson crate。您还可以使用serde在Rust结构体和JSON之间进行序列化和反序列化。

要连接到MongoDB数据库,请先使用以下命令创建一个新的Rust项目

# cargo new --bin rust_quickstart

接下来,在您的Cargo.toml文件中添加mongodb依赖项。您还需要添加tokio以使用异步方法。

Cargo.toml

[dependencies]
tokio = "1.12"
mongodb = "2.0"

最后,您可以用以下代码覆盖main.rs文件。

main.rs

use mongodb::{options::ClientOptions, Collection, bson::Document, bson::doc};
use std::error::Error;
use tokio;
#[tokio::main]
async fn main() -> Result<(), Box<dyn Error>> {
 // Create a client that connects to the computer_scientists collection
 let options = ClientOptions::parse("<CONN_STRING>").await?;
 let client = mongodb::Client::with_options(options)?;
 let theaters: Collection<Document> = client.database("sample_mflix").collection("theaters");
 // Look up one document:
 let theater = theaters
                 .find_one(doc! {"theaterId": 1043}, None,)
                 .await
                 ?.expect("No matching documents found.");
 println!("Theater: {}", theater);
 Ok(())
}

您需要将<CONN_STRING>替换为您的连接字符串

您可以通过运行以下命令来测试应用程序

# cargo run

假设您已在您的集群中安装了样本数据集,此代码片段将创建一个客户端并从sample_mflix数据库中访问theaters集合。然后,在theaters集合上使用find_one方法获取第一条记录并将文档输出到屏幕。

  Compiling rust_quickstart v0.1.0 (/opt/app/rust_quickstart)
   Finished dev [unoptimized + debuginfo] target(s) in 4.68s
    Running `target/debug/rust_quickstart`
Theater: { "_id": ObjectId("59a47286cfa9a3a73e51e752"), "theaterId": 1043, "location": { "address": { "street1": "1240 Marvin Rd Ne", "city": "Lacey", "state": "WA", "zipcode": "98516" }, "geo": { "type": "Point", "coordinates": [-122.76134, 47.058128] } } }

您可以在Github上查看源代码,或者在Rust快速入门指南中了解更多关于如何执行更高级操作的信息。

Rust 和 MongoDB Atlas

使用Rust,您可以连接到任何MongoDB实例,包括MongoDB的数据库即服务产品MongoDB Atlas。要尝试Rust,您可以在MongoDB Atlas中创建一个集群

使用MongoDB Atlas,您可以完全专注于您开发的应用程序,无需担心MongoDB的安装或配置。从Atlas Web UI获取您集群的连接字符串,并将其用于您的代码中连接到数据库。就是这样。现在您可以编写您的Rust应用程序了。

今天使用Atlas与Rust

零停机时间启动新集群或迁移到MongoDB Atlas。

常见问题解答

MongoDB支持Rust吗?

MongoDB支持许多现代编程语言,包括Rust。要开始使用Rust和MongoDB,您需要在项目中添加mongodb作为依赖项。将此crate导入到您的项目中,并遵循使用指南,在您的MongoDB数据库上执行CRUD操作。

Rust语言适合做什么?

Rust是一种非常适合编写CLI(命令行界面)工具、嵌入式设备应用程序或需要访问系统资源的任何其他应用程序的编程语言,例如网页浏览器。

Rust是用什么语言编写的?

最初,作者用OCaml编写了Rust编译器。随着项目从个人项目发展到更严肃的项目,团队将精力转移到用Rust编写编译器。自2011年以来,Rust可以编译自身。

Rust容易学吗?

Rust不是一种容易学习的语言。它带来了许多在更底层编程语言中存在的先进功能,例如变量类型和内存管理。尽管如此,根据最近的Stack Overflow调查,Rust是当今最受欢迎的语言之一。有许多资源可以帮助新手,例如Discord频道、活跃的官方论坛和优秀的文档。