command = $command; } /** * @param MongoClient $connection * @param string $hash * @param array $document * @return MongoCommandCursor */ public static function createFromDocument(MongoClient $connection, $hash, array $document) { throw new \Exception('Not implemented'); } /** * @return \MongoDB\Driver\Cursor */ protected function ensureCursor() { if ($this->cursor === null) { $convertedCommand = TypeConverter::fromLegacy($this->command); if (isset($convertedCommand->cursor)) { if ($convertedCommand->cursor === true || $convertedCommand->cursor === []) { $convertedCommand->cursor = new \stdClass(); } } $this->cursor = $this->db->command($convertedCommand, $this->getOptions()); } return $this->cursor; } /** * @return array */ protected function getCursorInfo() { return [ 'ns' => $this->ns, 'limit' => 0, 'batchSize' => $this->batchSize, 'skip' => 0, 'flags' => 0, 'query' => $this->command, 'fields' => null, ]; } /** * @return array */ protected function getIterationInfo() { $iterationInfo = parent::getIterationInfo(); if ($iterationInfo['started_iterating']) { $iterationInfo += [ 'firstBatchAt' => $iterationInfo['at'], 'firstBatchNumReturned' => $iterationInfo['numReturned'], ]; $iterationInfo['at'] = 0; $iterationInfo['numReturned'] = 0; } return $iterationInfo; } /** * @return array */ public function __sleep() { return ['command'] + parent::__sleep(); } }