域名 AXUM.RS 将于 2025 年 10 月到期。我们无意再对其进行续费,如果你有意接续这个域名,请与我们取得联系。
  • AXUM.RS 现仅需人民币 3000 元(大写:叁仟元整。接受适度议价
  • 按照行业规则,AXUM.RS 到期后,大概率会进入长时间的赎回期,该期间内,如果你想拥有该域名,将要付出高额的费用
  • 我们已启用 AXUM.EU.ORG 域名,并将持续运营
  • 仅接受微信或支付宝交易
如果你对 AXUM.RS 有兴趣,请和我们进行联系:

MongoDB 术语、安装及依赖

MongoDB 术语、安装及依赖

术语

为了便于学习,我们将 MongoDB 的术语和关系型数据库进行对比:

概念MongoDB关系型数据库
数据库databasedatabase
collection(集合)table
数据行document(文档)row data
字段fieldcolumn
索引indexindex
表关联embedding & linkdingjoin
分区/分片shardpartition
分区键sharding keypartition key

安装及云服务

  • 官方 MongoDB Atlas

  • 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 操作
要查看完整内容,请先登录