You need to enable JavaScript to run this app.
优惠活动
大模型
产品
解决方案
定价
更多

如何在Rust中使用MongoDB同文档的另一个字段设置目标字段?

在Rust中用MongoDB同文档字段更新指定字段的正确方式

你之前的代码把"$another_price"当成字面量字符串写入,是因为普通的$set更新文档不会解析字段引用。要实现用同文档另一个字段更新,需要使用聚合管道形式的更新操作(MongoDB 4.2+支持)。

正确代码示例

use mongodb::bson::doc;

// 构造聚合管道形式的更新
let update = vec![
    doc! {
        "$set": doc! {
            "price": "$another_price"
        }
    }
];

// 执行批量更新
coll.update_many(doc! {}, update, None).await?;

原理说明

当更新参数是数组形式的聚合阶段时,MongoDB会解析"$another_price"为当前文档中another_price字段的引用,而不是字面量字符串。

扩展:字段值计算

如果需要基于原字段做计算后再更新,也可以在聚合管道中使用MongoDB的表达式操作符,比如将价格翻倍:

let update = vec![
    doc! {
        "$set": doc! {
            "price": doc! { "$multiply": ["$another_price", 2] }
        }
    }
];

内容的提问来源于stack exchange,提问作者ekimpl

相关产品推荐
方舟 Agent Plan

超全模态模型 × Harness 升级,最新支持 Deepseek-V4.1-Flash、GLM-5.3 系列、Doubao-Seedream-5.0-pro、Kimi-K3 (部分), 限时 9.9 元起

最近更新时间:2026.06.26 15:05:56