diff --git a/src/Jenssegers/Mongodb/Connection.php b/src/Jenssegers/Mongodb/Connection.php index 7920ec9f6..15bd3589c 100644 --- a/src/Jenssegers/Mongodb/Connection.php +++ b/src/Jenssegers/Mongodb/Connection.php @@ -38,7 +38,7 @@ public function __construct(array $config) $this->connection = $this->createConnection($dsn, $config, $options); // Select database - $this->db = $this->connection->selectDatabase($config['database']); + $this->db = $this->connection->selectDatabase($this->getDatabaseDsn($dsn, $config['database'])); $this->useDefaultPostProcessor(); @@ -188,10 +188,21 @@ protected function getHostDsn(array $config) // Check if we want to authenticate against a specific database. $auth_database = isset($config['options']) && !empty($config['options']['database']) ? $config['options']['database'] : null; - return 'mongodb://' . implode(',', $hosts) . ($auth_database ? '/' . $auth_database : ''); } + /** + * Get database name from DSN string, if there is no database in DSN path - returns back $database argument. + * @param string $dsn + * @param $database + * @return string + */ + protected function getDatabaseDsn($dsn, $database) + { + $dsnDatabase = trim(parse_url($dsn, PHP_URL_PATH), '/'); + return trim($dsnDatabase) ? $dsnDatabase : $database; + } + /** * Create a DSN string from a configuration. * @param array $config