def project(self, id=None, *args, **kwargs):
projection = {}<EOL>if id is not None:<EOL><INDENT>projection['<STR_LIT>'] = id<EOL><DEDENT>for arg in args:<EOL><INDENT>projection[arg] = <NUM_LIT:1><EOL><DEDENT>for kwarg in kwargs:<EOL><INDENT>projection[kwarg] = kwargs[kwarg]<EOL><DEDENT>self._q.append({<EOL>'<STR_LIT>': projection<EOL>})<EOL>return self<EOL>
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: