sql >> Base de Datos >  >> NoSQL >> MongoDB

Cómo obtener la dirección del servidor del servidor del que se extraen los datos

Desafortunadamente, después de profundizar un poco más en el código fuente del controlador de C# (y el código fuente de Java para ver qué estaba haciendo), la dirección real del servidor que se usó como parte de la búsqueda está oculta en el Enumerador como un miembro privado. (_serverInstance ).

En particular, está escondido en una clase llamada MongoCursorEnumerator . Desafortunadamente, no hay una forma "honesta" de llegar a ella. Supongo que podría usar la reflexión de .NET para llegar a eso, pero generalmente no es una buena idea, especialmente con un código que no es de su propiedad. Si quisiera tener una bifurcación personalizada del controlador, podría agregarla fácilmente como una nueva propiedad. Es posible que desee agregar un problema aquí .

En general, puede obtener las instancias utilizadas por la conexión MongoDB, ya que están disponibles en MongoServerInstance clase, la Address propiedad.

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

Documentación

No obstante, en tu caso también puedes obtenerlo desde el cursor a través del Server propiedad:

cursor.Server.Instance.Address.Host

o

cursor.Server.Instances[] 

Documentación del servidor Cursor

Curiosamente, el controlador de C# lanza una excepción cuando hay más de una instancia disponible. Entonces, si no sabe cuántas instancias hay, debe manejar la exception (InvalidOperationException ), o siempre use las Instances[] propiedad para devolver las instancias asociadas.