有很多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");
,一切正常。
这是我不明白连接字符串中的/数据库选项。如果有人能够阐明这一点,我会非常感激。