Infelizmente, depois de cavar um pouco mais fundo através do código-fonte do driver C# (e do código-fonte Java para ver o que estava fazendo), o endereço do servidor real que foi usado como parte da busca está oculto no Enumerator como um membro privado (
_serverInstance ). Em particular, está escondido em uma classe chamada
MongoCursorEnumerator . Infelizmente, não há uma maneira "honesta" de chegar a isso. Você poderia usar reflexão .NET, suponho, para chegar a isso, mas isso geralmente não é uma boa ideia, especialmente com código que você não possui. Se você quiser ter um fork personalizado do driver, poderá adicioná-lo facilmente como uma nova propriedade. Você pode adicionar um problema aqui
. Em geral, você pode obter as instâncias usadas pela conexão MongoDB, pois elas estão disponíveis no
MongoServerInstance classe, o Address propriedade. var client = new MongoClient();
var server = client.GetServer();
// server.Instance.Address
Documentação
No entanto, no seu caso, você também pode obtê-lo no
cursor através do Server propriedade:cursor.Server.Instance.Address.Host
ou
cursor.Server.Instances[]
Documentação do servidor de cursor
O driver C# interessantemente lança uma exceção quando mais de uma instância está disponível. Então, se você não sabe quantas instâncias existem, você precisa lidar com a
exception (InvalidOperationException ), ou sempre use as Instances[] propriedade para retornar as instâncias associadas.