sql >> Databáze >  >> NoSQL >> MongoDB

Jak získat adresu serveru, ze kterého se stahují data

Bohužel po prostudování zdrojového kódu ovladače C# (a zdrojového kódu Java, abyste viděli, co dělal), je skutečná adresa serveru, která byla použita jako součást načítání, skryta v Enumerátoru jako soukromý člen. (_serverInstance ).

Konkrétně je skrytá ve třídě zvané MongoCursorEnumerator . Bohužel neexistuje "čestný" způsob, jak se k tomu dostat. Předpokládám, že byste k tomu mohli použít reflexi .NET, ale to obecně není dobrý nápad, zvláště s kódem, který nevlastníte. Pokud byste chtěli mít vlastní vidlici ovladače, můžete ji snadno přidat jako novou vlastnost. Možná budete chtít přidat problém sem .

Obecně můžete získat instance používané připojením MongoDB, protože jsou dostupné na MongoServerInstance třídy, Address vlastnost.

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

Dokumentace

Ve vašem případě jej však můžete získat také z cursor přes Server vlastnost:

cursor.Server.Instance.Address.Host

nebo

cursor.Server.Instances[] 

Dokumentace kurzorového serveru

Ovladač C# zajímavě vyvolá výjimku, když je k dispozici více než jedna instance. Pokud tedy nevíte, kolik instancí existuje, musíte buď zpracovat exception (InvalidOperationException ), nebo vždy použijte Instances[] vlastnost vrátit přidružené instance.




  1. Mongodb nemůže najít objekt s příliš dlouhým _id

  2. MongoDB+Azure+Android:com.mongodb.WriteConcernException err:není hlavní kód:10058

  3. MongoDB dotaz na velké první písmeno v existující databázi

  4. Jak používat fetchNewObject s update.one ReactiveMongo?