Desværre, efter at have gravet lidt dybere gennem C#-driverens kildekode (og Java-kildekoden for at se, hvad den gjorde), er den faktiske serveradresse, der blev brugt som en del af hentning, gemt væk i Enumerator som et privat medlem (_serverInstance
).
Især er det gemt væk i en klasse kaldet MongoCursorEnumerator
. Desværre er der ikke en "ærlig" måde at komme til det på. Du kunne bruge .NET-refleksion for at komme til det, men det er generelt ikke en god idé, især med kode du ikke ejer. Hvis du ville have en brugerdefineret gaffel af driveren, kunne du nemt tilføje den som en ny egenskab. Du vil måske tilføje et problem her
.
Generelt kan du få instanserne brugt af MongoDB-forbindelsen, da de er tilgængelige på MongoServerInstance
klasse, Address
ejendom.
var client = new MongoClient();
var server = client.GetServer();
// server.Instance.Address
Men i dit tilfælde kan du også hente det fra cursor
via Server
ejendom:
cursor.Server.Instance.Address.Host
eller
cursor.Server.Instances[]
C#-driveren kaster interessant og undtagelse, når mere end én instans er tilgængelig. Så hvis du ikke ved, hvor mange forekomster der er, skal du enten håndtere exception
(InvalidOperationException
), eller brug altid Instances[]
egenskab for at returnere de tilknyttede forekomster.