$inc修饰符如何处理mongodb中的并发请求?
$inc修饰符如何处理mongodb中的并发请求?,mongodb,mongodb-query,Mongodb,Mongodb Query,$inc修饰符可用于增加字段(例如用于分析、页面视图等的计数器) 如果存在并发请求,它是如何工作的 假设我有文件: { "views" : 1 } 如果有两个使用$inc的并发请求,会发生什么情况?视图是2还是3?确实有点宽泛,但我可以提供宽泛的笔划。从MongoDB开始使用默认的存储引擎。还提供了WiredTiger存储引擎,用于实现。但基本上,在所有版本中,每个请求都有一定程度的“锁定”。根据您的实际吞吐量需求,级别越精细越好 实际上,没有两个请求会同时发生,因为它们会“阻塞”锁,直到释放
$inc
修饰符可用于增加字段(例如用于分析、页面视图等的计数器)
如果存在并发请求,它是如何工作的
假设我有文件:
{ "views" : 1 }
如果有两个使用
$inc
的并发请求,会发生什么情况?视图是2还是3?确实有点宽泛,但我可以提供宽泛的笔划。从MongoDB开始使用默认的存储引擎。还提供了WiredTiger存储引擎,用于实现。但基本上,在所有版本中,每个请求都有一定程度的“锁定”。根据您的实际吞吐量需求,级别越精细越好
实际上,没有两个请求会同时发生,因为它们会“阻塞”锁,直到释放锁为止。因此,将返回的值(比如在请求中)将是该请求发出时的“当前状态”
因此,在这样一个请求中,首先执行的语句将返回值2,下一个执行的语句将返回值3。数据库中的结束位置是当前值为3
因此,无法同时“修改”某些内容,最终状态将是“所有”请求发出后发生的状态。因此,$inc
和其他运营商完全按照他们应该做的去做,并根据文档实际能够访问时的状态修改内容