Sayangnya, setelah menggali sedikit lebih dalam melalui kode sumber driver C# (dan kode sumber Java untuk melihat apa yang dilakukannya), alamat server sebenarnya yang digunakan sebagai bagian dari pengambilan disembunyikan di Enumerator sebagai anggota pribadi (_serverInstance
).
Secara khusus, itu disembunyikan di kelas yang disebut MongoCursorEnumerator
. Sayangnya, tidak ada cara "jujur" untuk mencapainya. Anda bisa menggunakan .NET refleksi saya kira untuk sampai ke sana, tapi itu umumnya bukan ide yang baik, terutama dengan kode yang tidak Anda miliki. Jika Anda ingin memiliki garpu khusus untuk driver, Anda dapat dengan mudah menambahkannya sebagai properti baru. Anda mungkin ingin menambahkan masalah di sini
.
Secara umum, Anda bisa mendapatkan instance yang digunakan oleh koneksi MongoDB, karena tersedia di MongoServerInstance
kelas, Address
properti.
var client = new MongoClient();
var server = client.GetServer();
// server.Instance.Address
Namun, dalam kasus Anda, Anda juga bisa mendapatkannya dari cursor
melalui Server
properti:
cursor.Server.Instance.Address.Host
atau
cursor.Server.Instances[]
Driver C# secara menarik melempar dan mengecualikan ketika lebih dari satu Instance tersedia. Jadi, jika Anda tidak tahu berapa banyak instance yang ada, Anda juga perlu menangani exception
(InvalidOperationException
), atau selalu gunakan Instances[]
properti untuk mengembalikan instance terkait.