INNER CODE UNIT · Python
_handle_projection_operator
mongomock/mongomock · mongomock/aggregate.py:448
def _handle_projection_operator(self, operator, value):
if operator == '$literal':
return value
if operator == '$let':
if not isinstance(value, dict):
raise InvalidDocument('$let only supports an object as its argument')
for field in ('vars', 'in'):
if field not in value:
raise OperationFailure(f"Missing '{field}' parameter to $let")
if not isinstance(value['vars'], dict):
raise OperationFailure('invalid parameter: expected an object (vars)')
user_vars = {
var_key: self.parse(var_value) for var_key, var_value in value['vars'].items()
}
return _Parser(
self._doc_dict,
dict(self._user_vars, **user_vars),
ignore_missing_keys=self._ignore_missing_keys,