diff --git a/app/workers/deletes.php b/app/workers/deletes.php index 1e31fc270f..3efe9910a5 100644 --- a/app/workers/deletes.php +++ b/app/workers/deletes.php @@ -679,16 +679,26 @@ class DeletesV1 extends Worker $limit = 50; $results = []; $sum = $limit; + $cursor = null; $executionStart = \microtime(true); while ($sum === $limit) { $chunk++; - $results = $database->find($collection, \array_merge([Query::limit($limit)], $queries)); + $mergedQueries = \array_merge([Query::limit($limit)], $queries); + if ($cursor instanceof Document) { + $mergedQueries[] = Query::cursorAfter($cursor); + } + + $results = $database->find($collection, $mergedQueries); $sum = count($results); + if ($sum > 0) { + $cursor = $results[$sum - 1]; + } + foreach ($results as $document) { if (is_callable($callback)) { $callback($document);