Es gibt viele SO's da draußen, aber da ist eine einfache Sache, die ich nicht verstehe, daher die Erstellung dieses SO.MongoDB Datenbank in Verbindungszeichenfolge angeben
Nehmen Sie die folgende Verbindungszeichenfolge mongodb//admin:[email protected]/my_database
. Mit dieser Verbindungszeichenfolge würde ich erwarten, dass ich eine Verbindung zur MongoDB-Instanz und der spezifischen Datenbank my_database
herstellen konnte.
Nach mehreren SO's und anderen Artikeln, sollte dies funktionieren, aber wenn ich die offizielle Dokumentation von MongoDB anschaue, ist die database
Option die Datenbank, die ich authentifizieren möchte.
/database ist der Name der Datenbank, zu der man sich anmelden möchte und ist daher nur relevant, wenn der Benutzername: password @ syntax verwendet wird. Wenn nicht angegeben, wird standardmäßig die Datenbank "admin" verwendet.
Ich möchte meine Benutzer auf die Admin-Datenbank authentifiziert werden (wie das ist, wo mein Benutzer liegt), aber ich möchte my_database
auf die Datenbank zuzugreifen. Ich würde dieses Verfahren erwarten zu arbeiten:
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);
}
Aber immer, wenn ich das tue, bin ich ein Timeout für alle Anrufe an die MongoDB zu empfangen. Ein Beispiel ist dies:
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;
}
Nun, wenn ich die Datenbank von der Verbindungszeichenfolge und Fest Code des Datenbanknamen in meinem return new MongoClient(_connectionString).GetDatabase("my_database");
entfernen war, funktioniert alles wie erwartet.
Dies ist, wo ich die /Datenbank Option in der Verbindungszeichenfolge nicht verstehe. Ich würde es wirklich schätzen, wenn jemand etwas Licht in diese Sache bringen könnte.