【发布时间】:2018-06-22 17:34:10
【问题描述】:
假设我们有一个包含如下文档的集合:
{
status: 'running',
progress: {
total: 50,
completed: 40,
error: 10
}
}
我要做的是将字段“状态”更新为“完成”,仅 如果(总计 = 完成 + 错误)。
我有很多线程更新已完成和错误字段,如果进度也完成,它们必须更新状态。
但我只想在一个查询中完成,而不是进行 2 个查询。如果我使用 2 个查询来执行此操作,我可能会遇到同步问题(一个线程读取文档,第二个线程在第一个线程更新之前对其进行更新......因此会丢失一些信息)。
我知道我可以通过两步提交查询(使用文档版本)来做到这一点。但我想知道是否有一个单一的查询解决方案。
谢谢。
【问题讨论】: