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

Come ottenere l'indirizzo del server da cui vengono estratti i dati

Sfortunatamente, dopo aver scavato un po' più a fondo attraverso il codice sorgente del driver C# (e il codice sorgente Java per vedere cosa stava facendo), l'indirizzo del server effettivo che è stato utilizzato come parte del recupero è nascosto nell'Enumeratore come membro privato (_serverInstance ).

In particolare, è nascosto in una classe chiamata MongoCursorEnumerator . Sfortunatamente, non esiste un modo "onesto" per arrivarci. Potresti usare la riflessione .NET suppongo per arrivarci, ma generalmente non è una buona idea, specialmente con codice che non possiedi. Se si desidera avere un fork personalizzato del driver, è possibile aggiungerlo facilmente come nuova proprietà. Potresti voler aggiungere un problema qui .

In generale, puoi ottenere le istanze utilizzate dalla connessione MongoDB, poiché sono disponibili su MongoServerInstance classe, l'Address proprietà.

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

Documentazione

Tuttavia, nel tuo caso puoi anche ottenerlo dal cursor tramite il Server proprietà:

cursor.Server.Instance.Address.Host

o

cursor.Server.Instances[] 

Documentazione del server cursore

È interessante notare che il driver C# genera un'eccezione quando è disponibile più di un'istanza. Quindi, se non sai quante istanze ci sono, devi gestire l'exception (InvalidOperationException ), oppure usa sempre Instances[] proprietà per restituire le istanze associate.