def filter(self, *args, **kwargs):
if args or kwargs:<EOL><INDENT>self.q_filters = Q(self.q_filters & Q(*args, **kwargs))<EOL><DEDENT>return self<EOL>
Apply filters to the existing nodes in the set.

:param kwargs: filter parameters

    Filters mimic Django's syntax with the double '__' to separate field and operators.

    e.g `.filter(salary__gt=20000)` results in `salary > 20000`.

    The following operators are available:

     * 'lt': less than
     * 'gt': greater than
     * 'lte': less than or equal to
     * 'gte': greater than or equal to
     * 'ne': not equal to
     * 'in': matches one of list (or tuple)
     * 'isnull': is null
     * 'regex': matches supplied regex (neo4j regex format)
     * 'exact': exactly match string (just '=')
     * 'iexact': case insensitive match string
     * 'contains': contains string
     * 'icontains': case insensitive contains
     * 'startswith': string starts with
     * 'istartswith': case insensitive string starts with
     * 'endswith': string ends with
     * 'iendswith': case insensitive string ends with

:return: self