From a4b642b7abbfee8a7f9e6204402caffdcb95ccf5 Mon Sep 17 00:00:00 2001 From: Mike Dirolf Date: Wed, 15 Apr 2009 10:43:17 -0400 Subject: [PATCH] don't manipulate documents being updated by default --- pymongo/collection.py | 2 +- test/test_collection.py | 10 ++++++++++ 2 files changed, 11 insertions(+), 1 deletion(-) diff --git a/pymongo/collection.py b/pymongo/collection.py index 72b6d3d4b..be25207a1 100644 --- a/pymongo/collection.py +++ b/pymongo/collection.py @@ -176,7 +176,7 @@ class Collection(object): return len(docs) == 1 and docs[0] or docs - def update(self, spec, document, upsert=False, manipulate=True, safe=False): + def update(self, spec, document, upsert=False, manipulate=False, safe=False): """Update an object(s) in this collection. Raises TypeError if either spec or document isn't an instance of diff --git a/test/test_collection.py b/test/test_collection.py index 67f66c84c..2cb3404e2 100644 --- a/test/test_collection.py +++ b/test/test_collection.py @@ -273,6 +273,16 @@ class TestCollection(unittest.TestCase): self.assertEqual(db.test.find_one(id1)["x"], 7) self.assertEqual(db.test.find_one(id2)["x"], 1) + def test_upsert(self): + db = self.db + db.drop_collection("test") + + db.test.update({"page": "/"}, {"$inc": {"count": 1}}, upsert=True) + db.test.update({"page": "/"}, {"$inc": {"count": 1}}, upsert=True) + + self.assertEqual(1, db.test.count()) + self.assertEqual(2, db.test.find_one()["count"]) + def test_safe_update(self): db = self.db db.drop_collection("test")