1) the connection is established when we perform some operation (find, update, delete, etc.)
2) Doc says: "Usually you only create one instance for a given database cluster and use it in your application." Thus, it makes no sense to cache the DB object, and it is also not cached in the driver code
3) DBCollection and DB are thread safe. DBCollection is cached in the DBApiLayer class in the driver.
source share