diff --git a/src/Operation/Find.php b/src/Operation/Find.php index 52c43c525..6516d52c9 100644 --- a/src/Operation/Find.php +++ b/src/Operation/Find.php @@ -30,6 +30,7 @@ use MongoDB\Exception\UnsupportedException; use MongoDB\Model\CodecCursor; +use function assert; use function is_array; use function is_bool; use function is_integer; @@ -418,6 +419,16 @@ private function createQueryOptions(): array $options['modifiers'] = is_object($modifiers) ? document_to_array($modifiers) : $modifiers; } + // Ensure no cursor is left behind when limit == batchSize by increasing batchSize + if (isset($options['limit'], $options['batchSize']) && $options['limit'] === $options['batchSize']) { + assert(is_integer($options['batchSize'])); + $options['batchSize']++; + } + + if (isset($options['limit']) && $options['limit'] === 1) { + $options['singleBatch'] = true; + } + return $options; } } diff --git a/tests/specifications b/tests/specifications index a32d4453a..11022ca4f 160000 --- a/tests/specifications +++ b/tests/specifications @@ -1 +1 @@ -Subproject commit a32d4453a7abcf7cd5cf3ddde99b60a31fba07b3 +Subproject commit 11022ca4f21377f00827918ebbdf5ea3dbdb7d4a