Menu Docs

Mongo.setReadPref()

Mongo.setReadPref(mode, tagSet, hedgeOptions)

Chame o setReadPref() método em um Mongo 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âmetro
Tipo
Descrição

string

matriz de documentos

Opcional. Um conjunto de tags usado para direcionar leituras para nós com as tags especificadas. tagSet não estará disponível se estiver usando o modo de read preference primary.

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 nearest não usam mais leituras protegidas por padrão. Se você especificar explicitamente uma leitura distribuída distribuída , o MongoDB executará uma leitura distribuída e registrará um aviso.

Opcional. Um documento que especifica se deve permitir o uso de leituras com hedge:

{ enabled: <boolean> }

O campo enabled é padronizado como verdadeiro; ou seja, especificar um documento vazio { } é equivalente a especificar { enabled: true }.

As leituras distribuídas estão disponíveis para agrupamentos fragmentados. Para usar leituras com hedge, o mongos deve ter enabled support para leituras com hedge (o padrão) e a preferência de leitura nãoprimary deve permitir o uso de leituras com hedge.

A preferência de leitura nearest permite o uso de leituras protegidas em clusters fragmentados por padrão; ou seja, por padrão, tem { enabled: true }.

Mongo.setReadPref() não é compatível com a opção preferência de leitura maxStalenessSeconds.

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

Mongo.setReadPref() tem o seguinte comportamento.

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().

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.

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.

Veja também:

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
    )