Ответ 1
Несколько серверов в строке соединения служат в качестве списка посещений для обнаружения режима подключения. Вы правы в том, что вы можете просто указать первичный сервер, и все будет работать отлично. То есть, пока основной сервер не опустится или не будет очень занят.. Указав несколько машин в строке подключения, вы даете клиенту более одного места для запроса конфигурации конфигурации реплики.
Когда режим подключения разрешается для набора реплик (см. ниже), драйвер найдет основной сервер, даже если он не находится в списке посещений, если отвечает хотя бы один из серверов в списке посещений ( ответ будет содержать полный набор реплик и имя текущего первичного). Кроме того, другие второстепенные объекты также будут обнаружены и добавлены (или удалены) в микс автоматически, даже после первоначального подключения. Это позволит вам добавлять и удалять серверы из набора реплик, и драйвер будет обрабатывать изменения автоматически.
Чтобы ответить на ваш последний вопрос, поскольку указание нескольких серверов неоднозначно относительно того, является ли это набор реплик или несколько монго (в ошвартованной настройке), драйвер будет проходить этап обнаружения подключения к серверам для определения их тип. У этого есть немного накладных расходов во время соединения, и их можно избежать, указав режим соединения в строке соединения - следовательно, ключевое слово replicaSet
. Поэтому, в то время как это необязательно, оно может ускорить время вашего соединения, чтобы явно указать, что серверы находятся в реплике, установленной в строке соединения.