$inc(自增)
最后更新:2026-10-09
$inc(自增)
$inc 按指定量增加(或减少)字段的数值。字段不存在时先初始化为增量值。`{ $inc: { views: 1 } }` 给 views 加 1;`{ $inc: { stock: -5 } }` 减 5。它是原子操作,适合计数器、浏览数等场景,避免读-改-写的竞态。
| 分类 | 更新字段 |
|---|---|
| MongoDB 版本 | 1.0+ |
| 示例语言 | mongosh (Shell) |
📝 语法
{ $inc: { <字段>: <增量> } }
▶ 示例
请在本地安装的 mongosh 中执行以下命令(需已启动 mongod):
// $inc:浏览数 +1,库存 -5
db.articles.updateOne(
{ _id: 1 },
{ $inc: { views: 1 } }
)
db.products.updateOne(
{ _id: 2 },
{ $inc: { stock: -5 } }
)
运行结果:
// 字段不存在时:views 初始化为 1;stock 减少 5
📌 注意事项
- 仅支持数值类型(整数、浮点、长整型);对非数值字段会报错
- 增量为 0 时也会设置字段(若不存在)
- $inc 是原子操作,无需 find 后再 update
🏷️ 相关标签
💡 相关案例
📚 相关教程
❓ 常见问题
Q$inc 能操作字符串吗?
A不能。$inc 只接受数值类型,对字符串字段使用会报错。字符串拼接用 $concat(聚合)或先读后写。
Q$inc 对不存在的字段会怎样?
A如果字段不存在,$inc 会先以 0 为初值再累加,即直接创建该字段并设为增量值。字段类型必须是数值,否则报错。
Q$inc 能减数值吗?
A可以,传负数即可,如 { $inc: { score: -5 } } 使 score 减 5。$inc 是原子操作,适合计数器、排行榜等并发场景。