|
在这种模式下,当你方式修改请求的时候回额外发送一个状态用来被服务端校验,从而服务端在执行你的修改请求前会根据你提交的状态进行一次校验,通过了才会执行修改。当然,服务端进行校验修改的2次操作是具有原子性的。在mongodb中,你可以通过调用“findAndModify”方法完成这个操作。- var account = db.bank.findone({id:1234})
- var old_bal = account['balance']
- var new_bal = old_bal + fund
- #状态校验会放到查询条件里面
- db.bank.findAndModify({id:1234, balance:old_bal}, {$set:{balance:new_bal}})
- #校验上次命令是否执行成功
- var success = db.runCommand({getlasterror:1,j:true})
- if(!success){
- #重试
- }
复制代码 |
|