def range(cls, collection, attribute, left, right, closed, index_id, skip=None, limit=None):
        """
            This will find all documents within a given range. In order to execute a range query, a
            skip-list index on the queried attribute must be present.

            :param collection Collection instance
            :param attribute The attribute path to check
            :param left The lower bound
            :param right The upper bound
            :param closed  If true, use interval including left and right, otherwise exclude right, but include left
            :param index_id ID of the index which should be used for the query
            :param skip  The number of documents to skip in the query
            :param limit The maximal amount of documents to return. The skip is applied before the limit restriction.

            :returns Document list
        """

        kwargs = {
            'index': index_id,
            'attribute': attribute,
            'left': left,
            'right': right,
            'closed': closed,
            'skip': skip,
            'limit': limit,
        }

        return cls._construct_query(name='range',
                                    collection=collection, multiple=True,
                                    **kwargs)