MongoDB
 sql >> Base de Dados >  >> NoSQL >> MongoDB

Como obter o endereço do servidor do qual os dados são extraídos


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.