$max(取较大值)
最后更新:2026-10-09
$max(取较大值)
$max 更新时只在给定值大于当前字段值时写入,否则保持不变。`{ $max: { highScore: 980 } }`。字段不存在时直接写入。适合记录最高分、历史最高价等「只升不降」的指标,与 $min 互补。
| 分类 | 更新字段 |
|---|---|
| MongoDB 版本 | 2.6+ |
| 示例语言 | mongosh (Shell) |
📝 语法
{ $max: { <字段>: <值> } }
⚙️ 参数
| 字段 | 要比较更新的字段名。 |
|---|---|
| 值 | 候选值,更大才写入。 |
返回值:更新结果文档
▶ 示例
请在本地安装的 mongosh 中执行以下命令(需已启动 mongod):
// $max:只升高,不降低
// 当前 950,980 更大则更新
// 当前 990,980 更小则忽略
db.games.updateOne(
{ _id: 1 },
{ $max: { highScore: 980 } }
)
运行结果:
// 字段当前值小于 980 时更新为 980;否则保持不变
📌 注意事项
- 字段不存在时直接写入
- 适合排行榜最高分、最高水位等场景
- 与 $min 搭配维护数据边界
🏷️ 相关标签
💡 相关案例
📚 相关教程
❓ 常见问题
Q$max 怎么维护最高分?
A每次更新 { $max: { highScore: 分数 } },分数不高时自动忽略。
Q$max 和 $set 什么区别?
A$set 无条件覆盖;$max 只在值更大时更新。
Q$max 是原子操作吗?
A是。