docs: def project(self, id=None, *args, **kwargs):
          """
          Adds a projection stage at the query
          :param id: Specifies if the id is in selected fields default value is None
          :param args: The list of the fields that will be project
          :param kwargs: The fields that will be generated
          :return:
          """
          projection = {}
  
          if id is not None:
              projection['_id'] = id
  
          for arg in args:
              projection[arg] = 1
  
          for kwarg in kwargs:
              projection[kwarg] = kwargs[kwarg]
  
          self._q.append({
              '$project': projection
          })
  
          return self