За съжаление, след копаене малко по-дълбоко в изходния код на C# драйвера (и изходния код на Java, за да видите какво прави), действителният адрес на сървъра, който е бил използван като част от извличането, е скрит в Enumerator като частен член (_serverInstance
).
По-специално, той е скрит в клас, наречен MongoCursorEnumerator
. За съжаление, няма "честен" начин да се стигне до него. Може да използвате .NET отражение, предполагам, за да стигнете до него, но това обикновено не е добра идея, особено с код, който не притежавате. Ако искате да имате персонализирано разклонение на драйвера, можете лесно да го добавите като ново свойство. Може да искате да добавите проблем тук
.
По принцип можете да получите екземплярите, използвани от MongoDB връзката, тъй като те са налични на MongoServerInstance
клас, Address
собственост.
var client = new MongoClient();
var server = client.GetServer();
// server.Instance.Address
Във вашия случай обаче можете да го получите и от cursor
чрез Server
свойство:
cursor.Server.Instance.Address.Host
или
cursor.Server.Instances[]
Документация на сървъра на курсора
Интересно е, че C# драйверът хвърля изключение, когато има повече от един екземпляр. Така че, ако не знаете колко екземпляра има, или трябва да се справите с exception
(InvalidOperationException
), или винаги използвайте Instances[]
свойство за връщане на свързаните екземпляри.