MongoDB
 sql >> Baza danych >  >> NoSQL >> MongoDB

Jak uzyskać adres serwera, z którego pobierane są dane?

Niestety, po przekopaniu się trochę głębiej przez kod źródłowy sterownika C# (i kod źródłowy Java, aby zobaczyć, co robi), rzeczywisty adres serwera, który był używany jako część pobierania, jest ukryty w Enumeratorze jako prywatny element członkowski (_serverInstance ).

W szczególności jest ukryty w klasie o nazwie MongoCursorEnumerator . Niestety nie ma „uczciwego” sposobu dotarcia do niego. Przypuszczam, że możesz użyć refleksji .NET, aby się do tego dostać, ale generalnie nie jest to dobry pomysł, szczególnie w przypadku kodu, którego nie jesteś właścicielem. Jeśli chciałbyś mieć niestandardowy widelec kierowcy, możesz go łatwo dodać jako nową właściwość. Możesz dodać problem tutaj .

Ogólnie można uzyskać instancje używane przez połączenie MongoDB, ponieważ są one dostępne na MongoServerInstance klasa Address właściwość.

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

Dokumentacja

Jednak w Twoim przypadku możesz go również pobrać z cursor przez Server właściwość:

cursor.Server.Instance.Address.Host

lub

cursor.Server.Instances[] 

Dokumentacja serwera kursora

Co ciekawe, sterownik języka C# zgłasza i wyjątek, gdy dostępnych jest więcej niż jedno wystąpienie. Tak więc, jeśli nie wiesz, ile jest instancji, musisz obsłużyć exception (InvalidOperationException ) lub zawsze używaj Instances[] właściwość, aby zwrócić powiązane instancje.




  1. Redis
  2.   
  3. MongoDB
  4.   
  5. Memcached
  6.   
  7. HBase
  8.   
  9. CouchDB
  1. mangusta zapełnianie zwraca tablicę zerową

  2. MongoDB Java Driver 3.0 nie może złapać wyjątku podczas uwierzytelniania

  3. Java Future — uwierzytelnianie Spring jest puste w AuditorAware

  4. schemat mongo (osadzanie a odniesienie)

  5. Jak działa cursor.observe i jak uniknąć uruchomienia wielu instancji?