$mul(乘法更新)
最后更新:2026-10-09
$mul(乘法更新)
$mul 将字段值乘以指定倍数。`{ $mul: { price: 0.9 } }` 打九折;`{ $mul: { quantity: 2 } }` 翻倍。字段不存在时按「乘以 0」语义处理,值为 0 的文档会被写入 0。对非数值字段报错。原子操作,适合批量调价、权重缩放。
| 分类 | 更新字段 |
|---|---|
| MongoDB 版本 | 2.6+ |
| 示例语言 | mongosh (Shell) |
📝 语法
{ $mul: { <字段>: <倍数> } }
⚙️ 参数
| 字段 | 要相乘的数值字段名。 |
|---|---|
| 倍数 | 乘法因子,可为小数或负数。 |
返回值:更新结果文档
▶ 示例
请在本地安装的 mongosh 中执行以下命令(需已启动 mongod):
// $mul:价格打九折
// 100 变为 90
db.products.updateOne(
{ _id: 1 },
{ $mul: { price: 0.9 } }
)
// 数量翻倍
db.products.updateOne(
{ _id: 2 },
{ $mul: { qty: 2 } }
)
运行结果:
// price 乘以 0.9,qty 乘以 2;字段不存在时创建为 0
📌 注意事项
- 字段不存在时创建为 0(乘以 0 的语义)
- 非数值字段会报错
- 与 $inc 类似,是原子运算
🏷️ 相关标签
💡 相关案例
📚 相关教程
❓ 常见问题
Q$mul 字段不存在会怎样?
A按乘以 0 处理,创建字段并写入 0。
Q$mul 能处理浮点吗?
A能,浮点精度取决于 BSON 类型。
Q$mul 和 $inc 什么区别?
A$inc 加减,$mul 乘除;都用增量或倍数表达。