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

MongoDB使用$inc更新字段时如何设置最小值不低于0

MongoDB 字段递减不低于0的实现方案

你可以根据你的MongoDB版本选择以下两种方案实现需求:


方案1:匹配条件添加字段值限制(兼容所有MongoDB版本,优先推荐)

仅在fieldToLower当前值大于0时才执行减1操作,值为0时直接不触发更新,从根源避免出现负数,性能最优,不会产生无效写入。

mycollection.update_one(
    {"_id": the_id, "fieldToLower": {"$gt": 0}},
    {"$inc": {"fieldToLower": -1}}
)

方案2:聚合更新管道(仅支持MongoDB 4.2及以上版本)

利用聚合表达式计算新值,取减1后的结果和0的最大值,无论原字段值是多少都会保证最终结果≥0,适合需要同时更新其他字段、无论fieldToLower是否大于0都需要触发更新动作的场景。

mycollection.update_one(
    {"_id": the_id},
    [
        {"$set": {"fieldToLower": {"$max": [{"$add": ["$fieldToLower", -1]}, 0]}}}
    ]
)

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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.09.30 21:39:01