Warning: file_get_contents(/data/phpspider/zhask/data//catemap/6/mongodb/11.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
$inc修饰符如何处理mongodb中的并发请求?_Mongodb_Mongodb Query - Fatal编程技术网

$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
和其他运营商完全按照他们应该做的去做,并根据文档实际能够访问时的状态修改内容