docs: def compile_query(query):
      """Compile each expression in query recursively."""
      if isinstance(query, dict):
          expressions = []
          for key, value in query.items():
              if key.startswith('$'):
                  if key not in query_funcs:
                      raise AttributeError('Invalid operator: {}'.format(key))
                  expressions.append(query_funcs[key](value))
              else:
                  expressions.append(filter_query(key, value))
          if len(expressions) > 1:
              return boolean_operator_query(operator.and_)(expressions)
          else:
              return (
                  expressions[0]
                  if len(expressions)
                  else lambda query_function: query_function(None, None)
              )
      else:
          return query