Tyvärr, efter att ha grävt lite djupare genom C#-drivrutinens källkod (och Java-källkoden för att se vad den gjorde), är den faktiska serveradressen som användes som en del av hämtningen gömd i Enumerator som en privat medlem (_serverInstance
).
I synnerhet är det gömt i en klass som kallas MongoCursorEnumerator
. Tyvärr finns det inget "ärligt" sätt att komma till det. Du kan använda .NET-reflektion antar jag för att komma till det, men det är i allmänhet inte en bra idé, särskilt med kod du inte äger. Om du ville ha en anpassad gaffel av föraren, kan du enkelt lägga till den som en ny egenskap. Du kanske vill lägga till ett problem här
.
I allmänhet kan du få de instanser som används av MongoDB-anslutningen, eftersom de är tillgängliga på MongoServerInstance
klass, Address
egendom.
var client = new MongoClient();
var server = client.GetServer();
// server.Instance.Address
Men i ditt fall kan du också hämta det från cursor
via Server
egenskap:
cursor.Server.Instance.Address.Host
eller
cursor.Server.Instances[]
Dokumentation för markörserver
C#-drivrutinen kastar intressant och undantag när mer än en instans är tillgänglig. Så om du inte vet hur många instanser det finns måste du antingen hantera exception
(InvalidOperationException
), eller använd alltid Instances[]
egenskap för att returnera de associerade instanserna.