我刚刚追查了一个令人讨厌的bug,这基本上就是竞争条件.为了论证,我们假设一个非常简单的文档结构{ _id : 'XXX', amount : 100 }.
这些文档中有数百个存在于集合中,并且由多个编写者访问,这些编写者有效地尝试将任何值减少但从不低于0.目前,这是通过两个查询完成的:
当多个线程同时执行此操作时,这当然容易导致混乱.但是有没有办法在原子操作中做到这一点?我test-and-set在文档中找不到类似操作的内容.
如果相关:运行这些操作的代码是运行多个Node.js实例和mongodbnpm包的服务器端JavaScript .