def _cursor(self, offset=0, limit=0, fields=None, sort=None, **kwargs):
        projection = {'_id': False}
        if fields:
            projection.update({field: True for field in fields})
        results = self._collection.find(kwargs, projection)
        if sort:
            sort_pairs = sort[:]
            for index, field in enumerate(sort):
                if field[0] == "-":
                    sort_pairs[index] = (field[1:], pymongo.DESCENDING)
                else:
                    sort_pairs[index] = (field, pymongo.ASCENDING)
            results.sort(sort_pairs)
        results.skip(offset or 0).limit(limit or 0)
        return results