关于mongodb的一个小问题
使用mongodb get到一个数据,需要对数据进行你给判断,符合条件才对数据进行更新操作 在这期间不想其他进程对数据库进行操作,mongodb里面有没有实现这样的写法; 比如说findOneAndUpdate接口,能不能是findOne之后不直接update而是进行一层判断在更新
3 回复
几种解决方式:
- 把你的判断条件等一堆逻辑转换成findOneAndUpdate的查询条件。
- 如果不怕性能低下,考虑用$where(但并不推荐这么做)。
有种很笨的方法 你可以先findOne然后判断是否符合条件,然后符合条件的update 一楼说的是比较好的方法
这是一个不符合常规设计的需求,数据库提供的服务是,根据你的条件,返回或更新数据,前提必须是你知道你想要什么数据,比如,你有{name:‘zx’, age:12}, {name:‘zx’, age:13}, {name:‘zc’, age:12}, 你必须给出合理的查询条件,这个条件必须限定死返回的数据,其次,你要求类似于锁库的操作,即原子性操作,只能通过findAndUpdate实现,二楼的非原子性;