MongoDB
 sql >> база данни >  >> NoSQL >> MongoDB

Как да получите адреса на сървъра на сървъра, от който се изтеглят данните

За съжаление, след копаене малко по-дълбоко в изходния код на C# драйвера (и изходния код на Java, за да видите какво прави), действителният адрес на сървъра, който е бил използван като част от извличането, е скрит в Enumerator като частен член (_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[] свойство за връщане на свързаните екземпляри.




  1. Redis
  2.   
  3. MongoDB
  4.   
  5. Memcached
  6.   
  7. HBase
  8.   
  9. CouchDB
  1. Как да заредите докер контейнер в Windows

  2. Изпълнение на db.repairDatabase() от mongodb-native в node.js

  3. pymongo + gevent:хвърли ми банан и просто monkey_patch?

  4. MongoDB дата в часовата зона

  5. В MongoDB, ако даден индекс е в 3 полета, можем ли да използваме този индекс, когато правим заявки в 2 полета? (заместващ знак в 3-то поле)