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() 方法可以对数据进行修改,它接收两个参数:

  • 修改条件,只有满足该条件数据才会进行修改。我们使用的是指定主键
  • 要修改的数据
    • 通过 $set 运算符,指定要修改哪些字段
    • 提供具体在字段和值
  • update_one() 用于修改单条数据
  • 如果要修改多条数据,使用 update_many()

测试:

## 修改单条笔记
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),可以在记录不存在时进行插入操作:

测试:

## 修改或插入单条笔记【修改】
PATCH  http://127.0.0.1:9527
Content-Type: application/json

{
    "id":"d100i1kdrfaihab7dmjg",
    "title":"note3 <UPDATED_1>",
    "content":"笔记 <UPDATED_1>"
}

## 修改或插入单条笔记【插入】
PATCH  http://127.0.0.1:9527
Content-Type: application/json

{
    "title":"note4",
    "content":"笔记4"
}

替换数据

replace_one() 用于替换指定的记录。注意区分 replaceupdate

  • replace 用于将记录完整地替换,只保留主键不变。它是【整体修改】
  • update 用于更新指定的字符。它是【部分修改】

测试:

## 替换笔记
PUT http://127.0.0.1:9527/d100i1kdrfaihab7dmjg
Content-Type: application/json

{
    "title":"note3 <REPLACED>",
    "content":"笔记 <REPLACED>"
}
要查看完整内容,请先登录