incrementOne() - 原子递增/递减字段值
📑 目录
方法概述
incrementOne 是一个便利方法,用于原子地递增或递减单个文档的字段值,简化了 updateOne({ $inc }) 的使用。
为什么需要 incrementOne?
传统方式(使用 updateOne):
使用 incrementOne:
核心优势
方法签名
参数说明
基础示例
示例 1:递增(默认 +1)
示例 2:指定增量
示例 3:递减(负数)
示例 4:多字段同时操作
示例 5:返回更新后的文档
真实场景示例
场景 1:登录次数统计
场景 2:积分系统
场景 3:文章浏览量
场景 4:库存管理
场景 5:多维度统计
选项参数详解
returnDocument - 返回时机
projection - 字段投影
性能说明
原子性保证
incrementOne 使用 MongoDB 的 $inc 操作符,保证原子性:
- ✅ 并发安全
- ✅ 无竞态条件
- ✅ 不需要事务
性能对比
错误处理
错误类型
错误处理示例
最佳实践
✅ 推荐做法
-
使用 incrementOne 替代 find + update
-
检查返回值
❌ 避免的做法
- 避免在循环中使用
与其他方法对比
vs updateOne({ $inc })
常见问题
Q1: incrementOne 和 updateOne 有什么区别?
A: incrementOne 是 updateOne({ $inc }) 的便利方法,语义更清晰,代码更简洁。
Q2: 支持并发吗?
A: ✅ 是的!incrementOne 是原子操作,并发安全。
Q3: 可以递减吗?
A: ✅ 可以!使用负数即可:
Q4: 字段不存在时会怎样?
A: MongoDB 会自动创建字段,从 0 开始递增。
Q5: 如何同时操作多个字段?
A: 使用对象形式:
另请参阅
- updateOne() - 更新单个文档
- findOneAndUpdate() - 查找并更新
- upsertOne() - 存在则更新,不存在则插入
- MongoDB 官方文档:$inc 操作符