需求:数据库有些资源需要进行自增自减进行抢占。
目的:同时还需要考虑资源是否为0,不能自减到负数。
目前我看到有人提供这样的代码:
db.collection(
'activity'
).where({
activity_id: _.eq(
"test1"
),
goodsLeft: _.gt(0)
}).update({
data: {
goodsLeft: _.inc(-1)
//每次把剩余商品数减一
}
}).then(
function
(d){
if
(d.stats.updated>0) {
/*抢购成功*/
}
else
{
/*抢购失败*/
}
})
在update之前进行了where帮忙判断库存情况。
疑问:所以我想请教,原子操作是否可以添加where条件判断。同时延申来讲,如果我的where不指定id,是一个批量覆盖的条件,那岂不是会对大量的记录进行原子操作?