有很多SO的存在,但有一個我不明白的簡單的東西,因此創建了這個SO。MongoDB在連接字符串中指定數據庫
看看下面的連接字符串mongodb//admin:[email protected]/my_database
。有了這個連接字符串,我期望我能夠連接到MongoDB實例,並且具體數據庫爲my_database
。
以下幾個SO和其他的,這應該有效,但如果我看MongoDB的官方文檔,database
選項是我想要認證的數據庫。
/database是要登錄的數據庫的名稱,因此只有在使用用戶名:password @語法時纔是相關的。如果未指定,則默認使用「admin」數據庫。
我想讓我的用戶通過管理數據庫進行身份驗證(因爲這是我的用戶所在位置),但我想訪問數據庫my_database
。我期望這個程序的工作:
private static string _connectionString = ConfigurationManager.ConnectionStrings["MongoDB"].ToString();
public static IMongoDatabase GetDatabase()
{
var _url = MongoUrl.Create(_connectionString);
var _databaseName = _url.DatabaseName;
return new MongoClient(_connectionString).GetDatabase(_databaseName);
}
但是,每當我這樣做,我收到任何對MongoDB的調用超時。一個例子是這樣的:
public List<SomeObject> GetAllObjects()
{
var database = DatabaseInstance.GetDatabase();
// Error is thrown here (timout after 30000ms)
var objects = database.Getcollection<SomeObject>("SomeObjects").Find(Builders<SomeObject>.Filter.Empty).Find();
return objects;
}
現在,如果我要刪除的連接字符串和硬編碼的數據庫名稱的數據庫在我return new MongoClient(_connectionString).GetDatabase("my_database");
,一切正常。
這是我不明白連接字符串中的/數據庫選項。如果有人能夠闡明這一點,我會非常感激。