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