MongoDB 术语、安装及依赖
本章我们讨论 MongoDB 的术语、安装及 Rust 操作 MongoDB 的依赖。MongoDB 插入数据
本章我们将讨论 MongoDB 插入数据的方法。MongoDB 查询数据
本章将讨论 MongoDB 查询全部数据、查询单条数据以及分页显示的方法。MongoDB 修改数据
本章将讨论 MongoDB 修改已有数据、替换已有数据、修改或插入新数据的方法。MongoDB 删除记录
本章将讨论 Mongo DB 删除记录操作MongoDB 过滤
本章将讨论 MongoDB 中最常用的功能:过滤器的定义。MongoDB 聚合操作
本章将讨论 MongoDB 的两种聚合操作:单一聚合和聚合管道。
MongoDB 术语、安装及依赖
- 19
- 2025-06-06 16:31:56
MongoDB 术语、安装及依赖
术语
为了便于学习,我们将 MongoDB 的术语和关系型数据库进行对比:
概念 | MongoDB | 关系型数据库 |
---|---|---|
数据库 | database | database |
表 | collection(集合) | table |
数据行 | document(文档) | row data |
字段 | field | column |
索引 | index | index |
表关联 | embedding & linkding | join |
分区/分片 | shard | partition |
分区键 | sharding key | partition key |
安装及云服务
-
claw run:数据库(Database)- 创建数据库(Create Database) - MongoDB
- 注册送 $5
- 如果关联的 github 注册时间超过 180 天,每月赠送 $5【所以,请使用超过 180 天的 github 账号进行注册】
- MongoDB 实例最小配置 $0.11/天(约 $3.3/月)。你可以根据需求调整配置,以实现【用满每月的 $5 赠金和配置最大化】的最优方案
-
docker:mongo
docker run \ --name mongo \ -e MONGO_INITDB_ROOT_USERNAME=mongo \ -e MONGO_INITDB_ROOT_PASSWORD=mongo \ --restart=always \ -v /var/docker/mongo:/data/db \ -p 127.0.0.1:27017:27017 \ -d mongo
-
podman:如果你使用的是 podman 而不是 docker
mkdir -p /var/docker/mongo && \ podman run \ --name mongo \ -e MONGO_INITDB_ROOT_USERNAME=mongo \ -e MONGO_INITDB_ROOT_PASSWORD=mongo \ --restart=always \ -v /var/docker/mongo:/data/db \ -p 127.0.0.1:27017:27017 \ -d docker.io/library/mongo
-
其它安装:请参见官方文档
Rust 驱动
cargo add mongodb
或者在 Cargo.toml
手动添加:
mongodb = "3.2.3"
AXUM 状态共享
async fn main() -> anyhow::Result<()> {
let cfg = Config::from_env();
let client = Client::with_uri_str(&cfg.database_url).await?;
let db = client.database(&cfg.database_name);
let state = AppState { db };
let app = Router::new()
.with_state(Arc::new(state));
let listener = TcpListener::bind("0.0.0.0:9527").await?;
axum::serve(listener, app).await?;
Ok(())
}
pub struct AppState {
pub db: mongodb::Database,
}
Database
内部已经使用了Arc
,所以可以放心地进行Clone
操作