MongoDB
 sql >> Base de données >  >> NoSQL >> MongoDB

Comment obtenir l'adresse du serveur du serveur à partir duquel les données sont extraites

Malheureusement, après avoir creusé un peu plus profondément dans le code source du pilote C # (et le code source Java pour voir ce qu'il faisait), l'adresse réelle du serveur qui a été utilisée dans le cadre de la récupération est cachée dans l'énumérateur en tant que membre privé (_serverInstance ).

En particulier, il est caché dans une classe appelée MongoCursorEnumerator . Malheureusement, il n'y a pas de moyen "honnête" d'y arriver. Vous pouvez utiliser la réflexion .NET, je suppose, pour y arriver, mais ce n'est généralement pas une bonne idée, surtout avec du code que vous ne possédez pas. Si vous vouliez avoir un fork personnalisé du pilote, vous pouvez facilement l'ajouter en tant que nouvelle propriété. Vous voudrez peut-être ajouter un problème ici .

En général, vous pouvez obtenir les instances utilisées par la connexion MongoDB, car elles sont disponibles sur MongoServerInstance classe, l'Address propriété.

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

Documentation

Cependant, dans votre cas, vous pouvez également l'obtenir à partir du cursor via le Server propriété :

cursor.Server.Instance.Address.Host

ou

cursor.Server.Instances[] 

Documentation du serveur de curseur

Le pilote C # lève de manière intéressante une exception lorsque plusieurs instances sont disponibles. Donc, si vous ne savez pas combien d'instances il y a, vous devez soit gérer l'exception (InvalidOperationException ), ou utilisez toujours les Instances[] propriété pour renvoyer les instances associées.