public function findAll($projections = array(), $sorts = array(), $options = array())
    {
        $options = $this->createOption($projections, $sorts, $options);
        if (!isset($options['iterator']) || $options['iterator'] === false) {
            $objects = parent::findAll($projections, $sorts, $options);
            foreach ($objects as $object) {
                if ($this->getStreamProjection($projections)) {
                    $data["stream"] = $this->bucket->openDownloadStream($object->getId());
                }
                $this->hydrator->hydrate($object, $data, true);
            }
            return $objects;
        } else {
            if (!is_string($options['iterator'])) {
                $options['iterator'] = GridFSDocumentIterator::class;
            }
            return parent::findAll($projections, $sorts, $options);
        }
    }