diff --git a/AUTHORS b/AUTHORS index a35fc5f1..60663940 100644 --- a/AUTHORS +++ b/AUTHORS @@ -262,3 +262,4 @@ that much better: * Jan Stein (https://github.com/janste63) * Timothé Perez (https://github.com/AchilleAsh) * oleksandr-l5 (https://github.com/oleksandr-l5) + * Ido Shraga (https://github.com/idoshr) diff --git a/docs/guide/querying.rst b/docs/guide/querying.rst index cf2024a0..e9e1de24 100644 --- a/docs/guide/querying.rst +++ b/docs/guide/querying.rst @@ -543,7 +543,10 @@ Documents may be updated atomically by using the There are several different "modifiers" that you may use with these methods: * ``set`` -- set a particular value +* ``set_on_insert`` -- set only if this is new document `need to add upsert=True`_ * ``unset`` -- delete a particular value (since MongoDB v1.3) +* ``max`` -- update only if value is bigger +* ``min`` -- update only if value is smaller * ``inc`` -- increment a value by a given amount * ``dec`` -- decrement a value by a given amount * ``push`` -- append a value to a list @@ -552,6 +555,7 @@ There are several different "modifiers" that you may use with these methods: * ``pull`` -- remove a value from a list * ``pull_all`` -- remove several values from a list * ``add_to_set`` -- add value to a list only if its not in the list already +* ``rename`` -- rename the key name .. _depending on the value: http://docs.mongodb.org/manual/reference/operator/update/pop/ diff --git a/tests/queryset/test_queryset.py b/tests/queryset/test_queryset.py index 1aa4f32a..1a15a114 100644 --- a/tests/queryset/test_queryset.py +++ b/tests/queryset/test_queryset.py @@ -867,6 +867,23 @@ class TestQueryset(unittest.TestCase): assert "Bob" == bob.name assert 30 == bob.age + def test_rename(self): + self.Person.drop_collection() + self.Person.objects.create(name="Foo", age=11) + + bob = self.Person.objects.as_pymongo().first() + assert 'age' in bob + assert bob['age'] == 11 + + self.Person.objects(name="Foo").update( + rename__age='person_age' + ) + + bob = self.Person.objects.as_pymongo().first() + assert 'age' not in bob + assert 'person_age' in bob + assert bob['person_age'] == 11 + def test_save_and_only_on_fields_with_default(self): class Embed(EmbeddedDocument): field = IntField()