Menu Docs
Página inicial do Docs
/
Manual do MongoDB
/ / /

Mongo.setReadPref()

Nesta página

  • Definição
  • Compatibilidade
  • Comportamento
  • Exemplos
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

Um dos seguintes modos de preferência de leitura : primary, primaryPreferred, secondary, secondaryPreferred ou nearest

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.

Dica

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
    )

Voltar

Mongo.setCausalConsistency