Есть много SO, но есть одна простая вещь, которую я не понимаю, следовательно, создание этого SO.MongoDB указать базу данных в строке подключения
Выполните следующую строку подключения mongodb//admin:[email protected]/my_database
. С этой строкой подключения я бы ожидал, что мне удалось подключиться к экземпляру MongoDB и конкретной базе данных my_database
.
После нескольких СО и других частиц это должно работать, но если я смотрю официальную документацию от MongoDB, то опция database
- это база данных, к которой я хочу выполнить аутентификацию.
/database - это имя базы данных для входа в систему и, следовательно, имеет значение только в том случае, если используется синтаксис username: 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");
, все работает, как ожидалось.
Здесь я не понимаю параметр /database в строке подключения. Я бы очень признателен, если бы кто-то мог пролить свет на это.