sql >> Databasteknik >  >> NoSQL >> MongoDB

Hur man får serveradressen till servern som data hämtas från

Tyvärr, efter att ha grävt lite djupare genom C#-drivrutinens källkod (och Java-källkoden för att se vad den gjorde), är den faktiska serveradressen som användes som en del av hämtningen gömd i Enumerator som en privat medlem (_serverInstance ).

I synnerhet är det gömt i en klass som kallas MongoCursorEnumerator . Tyvärr finns det inget "ärligt" sätt att komma till det. Du kan använda .NET-reflektion antar jag för att komma till det, men det är i allmänhet inte en bra idé, särskilt med kod du inte äger. Om du ville ha en anpassad gaffel av föraren, kan du enkelt lägga till den som en ny egenskap. Du kanske vill lägga till ett problem här .

I allmänhet kan du få de instanser som används av MongoDB-anslutningen, eftersom de är tillgängliga på MongoServerInstance klass, Address egendom.

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

Dokumentation

Men i ditt fall kan du också hämta det från cursor via Server egenskap:

cursor.Server.Instance.Address.Host

eller

cursor.Server.Instances[] 

Dokumentation för markörserver

C#-drivrutinen kastar intressant och undantag när mer än en instans är tillgänglig. Så om du inte vet hur många instanser det finns måste du antingen hantera exception (InvalidOperationException ), eller använd alltid Instances[] egenskap för att returnera de associerade instanserna.




  1. Jämför mellan två fält i ett dokument i MongoDB

  2. Meteor ser en fjärransluten mongodb-instans med MongoInternals.RemoteCollectionDriver

  3. Lagra relaterade nycklar som OID eller strängar i MongoDB

  4. Konvertera sträng till datum i mongodb