残念ながら、C#ドライバーのソースコード(およびJavaソースコードで何が行われているかを確認するため)を少し深く掘り下げた後、フェッチの一部として使用された実際のサーバーアドレスは、プライベートメンバーとして列挙子に隠されています(_serverInstance
。
特に、MongoCursorEnumerator
というクラスに隠されています。 。残念ながら、それに到達するための「正直な」方法はありません。 .NETリフレクションを使用することもできますが、特に自分が所有していないコードの場合は、一般的にはお勧めできません。ドライバーのカスタムフォークが必要な場合は、それを新しいプロパティとして簡単に追加できます。 ここ
に問題を追加することをお勧めします 。
一般に、MongoDB接続で使用されるインスタンスは、MongoServerInstance
で利用できるため、取得できます。 クラス、Address
プロパティ。
var client = new MongoClient();
var server = client.GetServer();
// server.Instance.Address
ただし、あなたの場合は、cursor
からも取得できます。 Server
経由 プロパティ:
cursor.Server.Instance.Address.Host
または
cursor.Server.Instances[]
複数のインスタンスが使用可能な場合、C#ドライバーは興味深いことに例外をスローします。したがって、インスタンスの数がわからない場合は、exception
を処理する必要があります。 (InvalidOperationException
)、または常にInstances[]
を使用します 関連するインスタンスを返すプロパティ。