Warning: file_get_contents(/data/phpspider/zhask/data//catemap/6/mongodb/13.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
如何在mongoDB中找到与给定查询匹配的随机文档并进行原子更新?_Mongodb_Mongo Java Driver - Fatal编程技术网

如何在mongoDB中找到与给定查询匹配的随机文档并进行原子更新?

如何在mongoDB中找到与给定查询匹配的随机文档并进行原子更新?,mongodb,mongo-java-driver,Mongodb,Mongo Java Driver,FindOneAndUpdate按顺序拾取文档。有没有一种方法可以选择与我们的查询匹配的随机文档并自动更新它?要获取随机文档,请使用 要更新它,请使用FindOneAndUpdate中的聚合管道。如果我正在运行应用程序的两个实例,并且两个实例在采样后获得相同的文档并尝试更新它,该怎么办?我猜其中一个会失败。如何处理这些类型的情况?我的用例是这样的:示例查找记录->尝试更新文档->如果失败->重新采样并重试更新文档直到成功。为什么更新会失败?如果有两个应用程序实例在运行,并且两个应用程序都选择相同

FindOneAndUpdate按顺序拾取文档。有没有一种方法可以选择与我们的查询匹配的随机文档并自动更新它?

要获取随机文档,请使用


要更新它,请使用FindOneAndUpdate中的聚合管道。

如果我正在运行应用程序的两个实例,并且两个实例在采样后获得相同的文档并尝试更新它,该怎么办?我猜其中一个会失败。如何处理这些类型的情况?我的用例是这样的:示例查找记录->尝试更新文档->如果失败->重新采样并重试更新文档直到成功。为什么更新会失败?如果有两个应用程序实例在运行,并且两个应用程序都选择相同的文档作为采样的一部分,两个应用程序都试图更新同一个文档,那么只有首先更新文档的应用程序才会成功,对吗?第二个操作将失败,因为它试图更新的原始记录已更改。完全有可能更新同一文档两次。