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/mongoengine/queryset/base.py b/mongoengine/queryset/base.py index 5dc47e00..254e0fbf 100644 --- a/mongoengine/queryset/base.py +++ b/mongoengine/queryset/base.py @@ -720,7 +720,7 @@ class BaseQuerySet: return queryset.filter(pk=object_id).first() def in_bulk(self, object_ids): - """ "Retrieve a set of documents by their ids. + """Retrieve a set of documents by their ids. :param object_ids: a list or tuple of ObjectId's :rtype: dict of ObjectId's as keys and collection-specific diff --git a/tests/queryset/test_queryset.py b/tests/queryset/test_queryset.py index 1aa4f32a..5add0750 100644 --- a/tests/queryset/test_queryset.py +++ b/tests/queryset/test_queryset.py @@ -867,6 +867,21 @@ 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()