MongoDB
 sql >> Datenbank >  >> NoSQL >> MongoDB

So erhalten Sie die Serveradresse des Servers, von dem Daten abgerufen werden

Nachdem Sie den C#-Treiberquellcode (und den Java-Quellcode, um zu sehen, was er tat) etwas tiefer durchsucht haben, ist die tatsächliche Serveradresse, die als Teil des Abrufs verwendet wurde, leider im Enumerator als privates Element verborgen (_serverInstance ).

Insbesondere ist es in einer Klasse namens MongoCursorEnumerator versteckt . Leider gibt es keinen "ehrlichen" Weg, um dorthin zu gelangen. Ich nehme an, Sie könnten .NET-Reflektion verwenden, um dorthin zu gelangen, aber das ist im Allgemeinen keine gute Idee, insbesondere bei Code, den Sie nicht besitzen. Wenn Sie eine benutzerdefinierte Gabel des Treibers haben möchten, können Sie diese einfach als neue Eigenschaft hinzufügen. Vielleicht möchten Sie hier ein Problem hinzufügen .

Im Allgemeinen können Sie die von der MongoDB-Verbindung verwendeten Instanzen abrufen, da sie auf der MongoServerInstance verfügbar sind Klasse, die Address Eigentum.

var client = new MongoClient();
var server = client.GetServer();
// server.Instance.Address

Dokumentation

In Ihrem Fall können Sie es jedoch auch vom cursor erhalten über den Server Eigenschaft:

cursor.Server.Instance.Address.Host

oder

cursor.Server.Instances[] 

Cursor-Server-Dokumentation

Der C#-Treiber löst interessanterweise eine Ausnahme aus, wenn mehr als eine Instanz verfügbar ist. Wenn Sie also nicht wissen, wie viele Instanzen es gibt, müssen Sie entweder die exception behandeln (InvalidOperationException ) oder verwenden Sie immer die Instances[] -Eigenschaft, um die zugeordneten Instanzen zurückzugeben.