Update transform to handle docs erroneously passed to unset (#416)

This commit is contained in:
Ross Lawley
2013-07-30 13:17:38 +00:00
parent 0c43787996
commit 5e70e1bcb2
3 changed files with 29 additions and 1 deletions

View File

@@ -203,11 +203,13 @@ def update(_doc_cls=None, **update):
value = field.prepare_query_value(op, value)
elif op in ('pushAll', 'pullAll'):
value = [field.prepare_query_value(op, v) for v in value]
elif op == 'addToSet':
elif op in ('addToSet', 'setOnInsert'):
if isinstance(value, (list, tuple, set)):
value = [field.prepare_query_value(op, v) for v in value]
elif field.required or value is not None:
value = field.prepare_query_value(op, value)
elif op == "unset":
value = 1
if match:
match = '$' + match