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
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.