Запросить конкретный вторичный монго с помощью драйвера c # - PullRequest
3 голосов
/ 21 марта 2012

У меня есть набор реплик mongo (2.0.3).

Если я подключаюсь к определенному узлу (т. Е. Моя строка подключения не включает более одного хоста) с использованием стандартного драйвера c # и указываю slaveOk (), будет ли этот запрос удовлетворяться случайным членом набора или только когда-нибудь узлом, к которому я подключился?

Если первое, как я могу достичь второго?

Спасибо.

Ответы [ 3 ]

3 голосов
/ 21 марта 2012

Если строка подключения имеет только одно имя хоста (и не имеет ни replicaSet = name, ни connect = replicaSet), драйвер C # подключится в прямом режиме к этому одному серверу и будет использовать только его.

Семантика набора реплик (где он использует весь набор) запускается либо путем перечисления более одного имени хоста (называемого начальным списком), либо с использованием replicaSet = name или connect = replicaSet.

Так что, если вы хотите использовать только один хост, вы на правильном пути. Вам нужно будет указать slaveOk в строке соединения, иначе соединение не будет установлено, если этот сервер не является основным.

1 голос
/ 09 июня 2016

указав connect = direct в качестве параметра в строке подключения, я решил проблему подключения к вторичным серверам через Powershell.

0 голосов
/ 28 февраля 2017

Используйте .WithReadPreference(ReadPreference.Secondary) для провайдера сбора

...