(self, filename, revision=-1)
Opens a Stream from which the application can read the contents of
        `filename` and optional `revision`.

        For example::

          my_db = MongoClient().test
          fs = GridFSBucket(my_db)
          grid_out = fs.open_download_stream_by_name("test_file")
          contents = grid_out.read()

        Returns an instance of :class:`~gridfs.grid_file.GridOut`.

        Raises :exc:`~gridfs.errors.NoFile` if no such version of
        that file exists.

        Raises :exc:`~ValueError` filename is not a string.

        :Parameters:
          - `filename`: The name of the file to read from.
          - `revision` (optional): Which revision (documents with the same
            filename and different uploadDate) of the file to retrieve.
            Defaults to -1 (the most recent revision).

        :Note: Revision numbers are defined as follows:

          - 0 = the original stored file
          - 1 = the first revision
          - 2 = the second revision
          - etc...
          - -2 = the second most recent revision
          - -1 = the most recent revision
Opens a Stream from which the application can read the contents of
        `filename` and optional `revision`.
Opens a Stream from which the application can read the contents of filename and optional revision .
def open_download_stream_by_name(self, filename, revision=-1):
        """Opens a Stream from which the application can read the contents of
        `filename` and optional `revision`.

        For example::

          my_db = MongoClient().test
          fs = GridFSBucket(my_db)
          grid_out = fs.open_download_stream_by_name("test_file")
          contents = grid_out.read()

        Returns an instance of :class:`~gridfs.grid_file.GridOut`.

        Raises :exc:`~gridfs.errors.NoFile` if no such version of
        that file exists.

        Raises :exc:`~ValueError` filename is not a string.

        :Parameters:
          - `filename`: The name of the file to read from.
          - `revision` (optional): Which revision (documents with the same
            filename and different uploadDate) of the file to retrieve.
            Defaults to -1 (the most recent revision).

        :Note: Revision numbers are defined as follows:

          - 0 = the original stored file
          - 1 = the first revision
          - 2 = the second revision
          - etc...
          - -2 = the second most recent revision
          - -1 = the most recent revision
        """
        validate_string("filename", filename)

        query = {"filename": filename}

        cursor = self._files.find(query)
        if revision < 0:
            skip = abs(revision) - 1
            cursor.limit(-1).skip(skip).sort("uploadDate", DESCENDING)
        else:
            cursor.limit(-1).skip(revision).sort("uploadDate", ASCENDING)
        try:
            grid_file = next(cursor)
            return GridOut(self._collection, file_document=grid_file)
        except StopIteration:
            raise NoFile(
                "no version %d for filename %r" % (revision, filename))
def open_download_stream_by_name ( self , filename , revision = - 1 ) : validate_string ( "filename" , filename ) query = { "filename" : filename } cursor = self . _files . find ( query ) if revision < 0 : skip = abs ( revision ) - 1 cursor . limit ( - 1 ) . skip ( skip ) . sort ( "uploadDate" , DESCENDING ) else : cursor . limit ( - 1 ) . skip ( revision ) . sort ( "uploadDate" , ASCENDING ) try : grid_file = next ( cursor ) return GridOut ( self . _collection , file_document = grid_file ) except StopIteration : raise NoFile ( "no version %d for filename %r" % ( revision , filename ) )