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.