我知道多重更新不是原子更新,并且更新查询可能会在此过程中失败。可以通过getLastError
找到错误。但是,如果我想回滚已在该特定查询中完成的更新,该怎么办?任何比繁琐的两阶段提交更简单的方法?
例如,假设我有一些用户及其手机型号的简单集合。现在我对所有拥有Nexus 4到Nexus 5的用户进行了多次更新(Dreamy,不是吗?)。唯一的条件是,全部或全部 - 所以即使一个N4用户没有得到他的所有N5也被收回。现在,不知怎的,mongodb介于两者之间,我和一些用N4的用户和一些用N5的用户困住了。现在,正如我从网上收集的那样,我不能让mongo直接回滚。如果操作失败,我将不得不将N5用户手动更新回N4。如果那种方式失败了,请不断重复。
或者当我有一个复杂的集合时,我将不得不保留一个新的密钥。 Status
并使用关键字更新 / 更新进行更新。
这就是我的理解。我想知道是否有更简单的方法。我从评论中假设答案很重要。