MongoDB 术语、安装及依赖
本章我们讨论 MongoDB 的术语、安装及 Rust 操作 MongoDB 的依赖。MongoDB 插入数据
本章我们将讨论 MongoDB 插入数据的方法。MongoDB 查询数据
本章将讨论 MongoDB 查询全部数据、查询单条数据以及分页显示的方法。MongoDB 修改数据
本章将讨论 MongoDB 修改已有数据、替换已有数据、修改或插入新数据的方法。MongoDB 删除记录
本章将讨论 Mongo DB 删除记录操作MongoDB 过滤
本章将讨论 MongoDB 中最常用的功能:过滤器的定义。MongoDB 聚合操作
本章将讨论 MongoDB 的两种聚合操作:单一聚合和聚合管道。
MongoDB 修改数据
- 8944
- 2025-06-06 16:34:13
本章将讨论 MongoDB 修改已有数据、替换已有数据、修改或插入新数据的方法。
修改已有数据
pub async fn update(
State(state): State<ArcAppState>,
Json(frm): Json<form::UpdateNote>,
) -> Result<Json<u64>> {
let n = state
.note_collect()
.update_one(
doc! {"_id": &frm.id},
doc! {"$set": {"title": &frm.title, "content": &frm.content}},
)
.await?;
Ok(Json(n.modified_count))
}
通过 update_one() 方法可以对数据进行修改,它接收两个参数:
测试:
## 修改单条笔记
PUT http://127.0.0.1:9527
Content-Type: application/json
{
"id":"d100i1kdrfaihab7dmjg",
"title":"note3 <UPDATED>",
"content":"笔记 <UPDATED>"
}
结果:
HTTP/1.1 200 OK
content-type: application/json
content-length: 1
connection: close
date: Fri, 06 Jun 2025 06:56:57 GMT
1
修改或插入数据
给 update_one() 或 update_many() 设置 upsert(true),可以在记录不存在时进行插入操作:
测试:
替换数据
replace用于将记录完整地替换,只保留主键不变。它是【整体修改】update用于更新指定的字符。它是【部分修改】
pub async fn replace(
State(state): State<ArcAppState>,
Path(id): Path<String>,
Json(frm): Json<form::CreateNote>,
) -> Result<Json<u64>> {
let filter = doc! {"_id": &id};
let node = model::Note {
id,
content: frm.content,
title: frm.title,
created_at: chrono::Utc::now(),
};
let n = state.note_collect().replace_one(filter, node).await?;
Ok(Json(n.modified_count))
}
测试:
## 替换笔记
PUT http://127.0.0.1:9527/d100i1kdrfaihab7dmjg
Content-Type: application/json
{
"title":"note3 <REPLACED>",
"content":"笔记 <REPLACED>"
}
