比如我使用where先查询组,如果组成员是0,就往里面添加成员,确保每个组成员只有一个人,但是会不会有可能发生并发,在我先查找到空组后,另外一个用户同时操作,push进去了,等我再执行update的时候,实际变成了这个组已经有一个成员,加上我push的,最终这个组会有两个成员,这种情况会不会发生呢?怎么解决?
db.collection( 'group' ).where({ member: _.size(0) }).update({ data: { member: _.push([OPENID]) } }) |
会。请用原子操作。
另外,限定最多只一个人为什么要用数组?用一个字段不行吗?member改成memberOpenid?
db.collection(
'group'
).where({
memberOpenid: _.exists(false)
}).update({
data: {
memberOpenid: OPENID
}
})