sql >> Database >  >> NoSQL >> MongoDB

Hoe u het serveradres kunt krijgen van de server waarvan de gegevens worden opgehaald?

Helaas, na een beetje dieper te hebben gegraven door de broncode van het C#-stuurprogramma (en de Java-broncode om te zien wat het deed), is het daadwerkelijke serveradres dat werd gebruikt als onderdeel van het ophalen, verborgen in de Enumerator als een privélid (_serverInstance ).

Het is met name verborgen in een klasse genaamd de MongoCursorEnumerator . Helaas is er geen "eerlijke" manier om er te komen. Je zou .NET-reflectie kunnen gebruiken om er bij te komen, maar dat is over het algemeen geen goed idee, vooral niet met code die je niet bezit. Als u een aangepaste vork van de bestuurder wilt hebben, kunt u deze eenvoudig als een nieuwe eigenschap toevoegen. Misschien wilt u hier een probleem toevoegen .

Over het algemeen kunt u de instanties ophalen die worden gebruikt door de MongoDB-verbinding, aangezien ze beschikbaar zijn op de MongoServerInstance klasse, het Address eigendom.

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

Documentatie

In jouw geval kun je het echter ook krijgen van de cursor via de Server eigendom:

cursor.Server.Instance.Address.Host

of

cursor.Server.Instances[] 

Cursorserverdocumentatie

Het C#-stuurprogramma gooit interessant en uitzondering wanneer er meer dan één exemplaar beschikbaar is. Dus als u niet weet hoeveel instanties er zijn, moet u ofwel de exception afhandelen (InvalidOperationException ), of gebruik altijd de Instances[] eigenschap om de gekoppelde instanties te retourneren.




  1. Meerdere populaties - mongoosejs

  2. Hoe kan ik in MongoDB een document vinden dat is ingesloten?

  3. Verwijder items uit een reeks documenten in Spring+Mongo

  4. MongoDB - enorme hoeveelheid MongoCleaner-threads