Насколько это хорошо или плохо, и почему mon go не задокументировано, есть ли другие доступные значения, которые может иметь эта опция?
Как указано в принят ответ, что это задокументировано в документации к драйверу. Теперь о другой части вопроса.
Вообще говоря, в контексте набора реплик вы хотели бы подключиться к топологии, а не напрямую к конкретному c члену набора реплик, за исключением административных целей. , Репликация предназначена для обеспечения избыточности и подключения непосредственно к одному элементу, т. Е. Первичный не рекомендуется в случае аварийного переключения.
Все официальные драйверы MongoDB следуют Технические характеристики MongoDB . Что касается прямых соединений, требование в настоящее время равно server-discovery-and-Monitoring.rst # general-needs :
Прямые соединения : клиент ДОЛЖЕН иметь возможность подключаться к одному серверу любого типа. Это включает в себя запрос скрытых членов набора реплик и подключение к неинициализированным членам (см. RSGhost) для запуска «replSetInitiate». Установка предпочтения чтения НЕ ДОЛЖНА быть необходимой для подключения к вторичному устройству. Конечно, вторичный сервер отклонит все операции, выполненные с предпочтением чтения PRIMARY, поскольку бит slaveOk не установлен, но само исходное соединение успешно. Драйверы МОГУТ разрешать прямые соединения с арбитрами (например, для запуска административных команд).
Указывает, что он ДОЛЖЕН быть в состоянии сделать это, но не как. Драйвер MongoDB Go - не единственный драйвер, который в настоящее время поддерживает опцию direct
, есть также .NET / C# и Ruby.
В настоящее время существует открытый PR для спецификаций, унифицирующих поведение. В будущем все драйверы будут иметь одинаковый способ установления прямого соединения.