sql >> Database teknologi >  >> NoSQL >> MongoDB

Sådan får du serveradressen på den server, som data hentes fra

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

Dokumentation

Men i dit tilfælde kan du også hente det fra cursor via Server ejendom:

cursor.Server.Instance.Address.Host

eller

cursor.Server.Instances[] 

Markørserverdokumentation

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.




  1. MongoDB $sum Aggregation Pipeline Operator

  2. MongoDB kan ikke parse forespørgsel (2dsphere):to betingelser

  3. MongoDb Aggregation:Hvordan kan jeg gruppere en array-1 baseret på en anden array-2, når den gives array-1 og array-2?

  4. Hvordan modtager man Redis udløbsbegivenheder med node?