Mongo.setReadPref()
Nesta página
Definição
Mongo.setReadPref(mode, tagSet, hedgeOptions)
Chame o
setReadPref()
método em umMongo
objeto 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. | |
documento | IMPORTANTE: a partir do MongoDB,8.0 as leituras distribuídas estão obsoletas. As queries que especificam a preferência de leitura Opcional. Um documento que especifica se deve permitir o uso de leituras com hedge:
O campo As leituras distribuídas estão disponíveis para agrupamentos fragmentados. Para usar leituras com hedge, o A preferência de leitura |
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.
Especificar leitura distribuída
Importante
A partir do MongoDB 8.0, as leituras distribuídas estão obsoletas. As queries que especificam a read preference nearest
não usam mais leituras protegidas por padrão. Se você especificar explicitamente uma leitura com hedge, o MongoDB executará uma leitura com hedge e registrará um aviso.
Para clusters fragmentados, você pode ativar leituras distribuídas para preferências de leitura não primárias. Para utilizar leituras distribuídas, o mongos
deve ter enabled support
para leituras distribuídas (o padrão) e as preferências de leitura nãoprimary
devem permitir o uso de leituras distribuídas.
Para direcionar secundários em clusters fragmentados usando leituras com hedge, inclua o modo e as hedgeOptions, como nos exemplos a seguir:
Sem um conjunto de tags
db.getMongo().setReadPref( "secondary", // mode null, // tag set { enabled: true } // hedge options ) Com um conjunto de tags
db.getMongo().setReadPref( "secondary", // mode [ { "datacenter": "B" }, { } ], // tag set { enabled: true } // hedge options )