
关于
Azure Cosmos DB Rust SDK(NoSQL API)。用于文档 CRUD、查询、容器管理和全球分布式数据操作
name: azure-cosmos-rust description: Azure Cosmos DB Rust SDK(NoSQL API)。用于文档CRUD、查询、容器和全球分布式数据。 risk: unknown source: community date_added: '2026-02-27'
Azure Cosmos DB Rust SDK
Azure Cosmos DB NoSQL API客户端库——全球分布式多模型数据库。
安装
cargo add azure_data_cosmos azure_identity
环境变量
COSMOS_ENDPOINT=https://<account>.documents.azure.com:443/
COSMOS_DATABASE=mydb
COSMOS_CONTAINER=mycontainer
认证
use azure_identity::DeveloperToolsCredential;
use azure_data_cosmos::CosmosClient;
let credential = DeveloperToolsCredential::new(None)?;
let client = CosmosClient::new(
"https://<account>.documents.azure.com:443/",
credential.clone(),
None,
)?;
客户端层级
| 客户端 | 用途 | 获取方式 |
|--------|---------|----------|
| CosmosClient | 账户级操作 | 直接实例化 |
| DatabaseClient | 数据库操作 | client.database_client() |
| ContainerClient | 容器/项目操作 | database.container_client() |
核心工作流
获取数据库和容器客户端
let database = client.database_client("myDatabase");
let container = database.container_client("myContainer");
创建项目
use serde::{Serialize, Deserialize};
#[derive(Serialize, Deserialize)]
struct Item {
pub id: String,
pub partition_key: String,
pub value: String,
}
let item = Item {
id: "1".into(),
partition_key: "partition1".into(),
value: "hello".into(),
};
container.create_item("partition1", item, None).await?;
读取项目
let response = container.read_item("partition1", "1", None).await?;
let item: Item = response.into_model()?;
替换项目
let mut item: Item = container.read_item("partition1", "1", None).await?.into_model()?;
item.value = "updated".into();
container.replace_item("partition1", "1", item, None).await?;
补丁更新项目
use azure_data_cosmos::models::PatchDocument;
let patch = PatchDocument::default()
.with_add("/newField", "newValue")?
.with_remove("/oldField")?;
container.patch_item("partition1", "1", patch, None).await?;
删除项目
container.delete_item("partition1", "1", None).await?;
Key认证(可选)
通过feature flag启用基于密钥的认证:
cargo add azure_data_cosmos --features key_auth
最佳实践
- 始终指定partition key — 点读和写入必需
- 使用
into_model()?— 将响应反序列化为你的类型 - 派生
Serialize和Deserialize— 用于所有文档类型 - 使用Entra ID认证 — 优先使用
DeveloperToolsCredential而非密钥认证 - 复用客户端实例 — 客户端是线程安全且可复用的
参考链接
| 资源 | 链接 | |----------|------| | API参考 | https://docs.rs/azure_data_cosmos | | 源代码 | https://github.com/Azure/azure-sdk-for-rust/tree/main/sdk/cosmos/azure_data_cosmos | | crates.io | https://crates.io/crates/azure_data_cosmos |
何时使用
此技能适用于执行概述中描述的工作流或操作。
局限性
- 仅在任务明确匹配上述范围时使用此技能。
- 不要将输出视为环境特定验证、测试或专家审查的替代品。
- 如果缺少必需的输入、权限、安全边界或成功标准,请停下来寻求澄清。
兼容工具
Claude CodeCursor
标签
后端开发
