diff --git a/pymongo/connection.py b/pymongo/connection.py
index db6e5a2..1280d3f 100644
--- a/pymongo/connection.py
+++ b/pymongo/connection.py
@@ -283,6 +283,7 @@ class Connection(object):  # TODO support auth for pooling
 
         self.__host = None
         self.__port = None
+        self.__database = None
 
         self.__slave_okay = slave_okay
         if slave_okay and len(self.__nodes) > 1:
@@ -308,6 +309,7 @@ class Connection(object):  # TODO support auth for pooling
             database = database or "admin"
             if not self[database].authenticate(username, password):
                 raise ConfigurationError("authentication failed")
+            self.__database = database
 
     @classmethod
     def from_uri(cls, uri="mongodb://localhost", **connection_args):
@@ -410,6 +412,11 @@ class Connection(object):  # TODO support auth for pooling
         return self.__port
 
     @property
+    def database(self):
+        """Current connected database."""
+        return self.__database
+
+    @property
     def nodes(self):
         """List of all known nodes.
 
@@ -564,6 +571,7 @@ class Connection(object):  # TODO support auth for pooling
         self.__pool = _Pool(self.__connect)
         self.__host = None
         self.__port = None
+        self.__database = None
 
     def set_cursor_manager(self, manager_class):
         """Set this connection's cursor manager.
@@ -737,13 +745,14 @@ class Connection(object):  # TODO support auth for pooling
 
     def __cmp__(self, other):
         if isinstance(other, Connection):
-            return cmp((self.__host, self.__port),
-                       (other.__host, other.__port))
+            return cmp((self.__host, self.__port, self.__database),
+                       (other.__host, other.__port, self.__Database))
         return NotImplemented
 
     def __repr__(self):
         if len(self.__nodes) == 1:
-            return "Connection(%r, %r)" % (self.__host, self.__port)
+            host, port, db = (self.__host, self.__port, self.__database)
+            return "Connection(%r, %r%r)" % (host, port, db and ', ' + db or '')
         else:
             return "Connection(%r)" % ["%s:%d" % n for n in self.__nodes]
 
