Definição
Mongo.setReadPref(mode, tagSet)Chame o
setReadPref()método em umMongoobjeto de conexão para controlar como o cliente roteará todas as queries para membros do conjunto de réplicas. [1]Observação
Você deve chamar
Mongo.setReadPref()no objeto de conexão antes de recuperar documentos usando essa conexão para usar essa preferência de leitura.
| [1] | Para aplicar uma read preference a uma ou mais queries específicas, você pode aplicar cursor.readPref() a um cursor antes da iteração. Consulte cursor.readPref() para detalhes. |
Parâmetros
Parâmetro | Tipo | Descrição |
|---|---|---|
string | Um dos seguintes modos de preferência de leitura : | |
matriz de documentos | Opcional. Um conjunto de tags usado para direcionar leituras para nós com as tags especificadas. Para obter detalhes, consulte Listas de conjuntos de tags de read preference. |
Mongo.setReadPref() não é compatível com a opção preferência de leitura maxStalenessSeconds.
Compatibilidade
Esse método está disponível em implantações hospedadas nos seguintes ambientes:
MongoDB Atlas: o serviço totalmente gerenciado para implantações do MongoDB na nuvem
MongoDB Enterprise: a versão autogerenciada e baseada em assinatura do MongoDB
MongoDB Community: uma versão com código disponível, de uso gratuito e autogerenciada do MongoDB
Comportamento
Mongo.setReadPref() tem o seguinte comportamento.
Interação com db.runCommand()
A partir do mongosh 2.0, o db.runCommand() ignora quaisquer read preferences globais adicionadas por meio da connection string ou utilizando o método Mongo.setReadPref(). Para especificar a read preference desejada, utilize o argumento options ao chamar db.runCommand().
Exemplos
Especificar modo de preferência de leitura
A seguinte operação define o modo de preferência de leitura para direcionar a leitura para um nó secundário. Isso permite implicitamente leituras de secundários.
db.getMongo().setReadPref('secondary')
No entanto, se chamado enquanto conectado ao primary usando mongosh, o comando acima não roteia querys para um secundário.
Especificar conjunto de tags de preferência de leitura
Para segmentar secundários com tags específicas, inclua a array mode e o tagSet:
db.getMongo().setReadPref( "secondary", [ { "datacenter": "B" }, // First, try matching by the datacenter tag { "region": "West"}, // If not found, then try matching by the region tag { } // If not found, then use the empty document to match all eligible members ] )
Durante o processo de seleção secundário, o MongoDB tenta encontrar membros secundários com a tag datacenter: "B" primeiro.
Se encontrado, o MongoDB limita os secundários elegíveis àqueles com a marcação
datacenter: "B"e ignora as marcações restantes.Se nenhum for encontrado, o MongoDB tentará encontrar membros secundários com a tag
"region": "West".Se encontrado, o MongoDB limita os secundários elegíveis àqueles com a marcação
"region": "West".Se nenhum for encontrado, o MongoDB usará todos os secundários elegíveis.
Consulte Ordem da correspondência de tags para obter detalhes.