From f8e6d36c8ae2f80bbae464c2b594cfcf0f3925d3 Mon Sep 17 00:00:00 2001 From: Bernie Hackett Date: Fri, 26 Sep 2014 16:18:47 -0700 Subject: [PATCH] PYTHON-493 - Add **kwargs to Database.dereference --- pymongo/database.py | 7 +++++-- test/test_database.py | 10 ++++++++++ 2 files changed, 15 insertions(+), 2 deletions(-) diff --git a/pymongo/database.py b/pymongo/database.py index 024ed1272..f75af9e93 100644 --- a/pymongo/database.py +++ b/pymongo/database.py @@ -916,7 +916,7 @@ class Database(common.BaseObject): # Sockets will be deauthenticated as they are used. self.connection._purge_credentials(self.name) - def dereference(self, dbref): + def dereference(self, dbref, **kwargs): """Dereference a :class:`~bson.dbref.DBRef`, getting the document it points to. @@ -928,6 +928,9 @@ class Database(common.BaseObject): :Parameters: - `dbref`: the reference + - `**kwargs` (optional): any additional keyword arguments + are the same as the arguments to + :meth:`~pymongo.collection.Collection.find`. """ if not isinstance(dbref, DBRef): raise TypeError("cannot dereference a %s" % type(dbref)) @@ -935,7 +938,7 @@ class Database(common.BaseObject): raise ValueError("trying to dereference a DBRef that points to " "another database (%r not %r)" % (dbref.database, self.__name)) - return self[dbref.collection].find_one({"_id": dbref.id}) + return self[dbref.collection].find_one({"_id": dbref.id}, **kwargs) def eval(self, code, *args): """Evaluate a JavaScript expression in MongoDB. diff --git a/test/test_database.py b/test/test_database.py index 6362a5b32..e9fa5d4b2 100644 --- a/test/test_database.py +++ b/test/test_database.py @@ -399,6 +399,16 @@ class TestDatabase(unittest.TestCase): db.test.save(obj) self.assertEqual(obj, db.dereference(DBRef("test", 4))) + def test_deref_kwargs(self): + db = self.client.pymongo_test + db.test.remove({}) + + db.test.insert({"_id": 4, "foo": "bar"}) + self.assertEqual(SON([("foo", "bar")]), + db.dereference(DBRef("test", 4), + fields={"_id": False}, + as_class=SON)) + def test_eval(self): db = self.client.pymongo_test db.test.remove({})