Menu Docs

Página inicial do DocsDesenvolver aplicaçõesManual do MongoDB

Leituras retráteis

Nesta página

  • Pré-requisitos
  • Habilitando leituras repetíveis
  • Operações de leitura repetível
  • Comportamento

As leituras repetíveis permitem que os drivers do MongoDB tentem automaticamente determinadas operações de leitura uma única vez se encontrarem determinados erros de rede ou servidor.

Versão mínima do driver

Drivers MongoDB oficiais compatíveis com MongoDB Server 4.2 e posterior suportam leituras repetíveis.

Para obter mais informações sobre os drivers oficiais do MongoDB, consulte Drivers do MongoDB.

Versão mínima do servidor
Os drivers só podem tentar ler novamente as operações se estiverem conectados ao MongoDB Server 3.6 ou posterior.

Os drivers oficiais do MongoDB compatíveis com o MongoDB Server 4.2 e posterior habilitam leituras repetíveis por padrão. Para desativar explicitamente as leituras repetíveis, especifique retryReads=false na connection string do sistema.

mongosh não oferece suporte a leituras repetíveis.

Os drivers do MongoDB suportam a repetição das seguintes operações de leitura. A lista referencia uma descrição genérica de cada método. Para sintaxe e uso específicos, consulte a documentação do driver para esse método.

Métodos
Descrição
Collection.aggregate
Collection.count
Collection.countDocuments
Collection.distinct
Collection.estimatedDocumentCount
Collection.find
Database.aggregate

Para Collection.aggregate e Database.aggregate, os drivers só podem tentar novamente os pipelines de agregação que não incluem estágios de gravação, como $out ou $merge.

Operações de leitura da API CRUD
Collection.watch
Database.watch
MongoClient.watch
Operações de fluxo de mudanças
MongoClient.listDatabases
Database.listCollections
Collection.listIndexes
Operações de Enumeração
Operações GridFS apoiadas por Collection.find (por exemplo GridFSBucket.openDownloadStream)
Operações de download de arquivos GridFS

Os drivers do MongoDB podem incluir suporte à repetição para outras operações, como métodos auxiliares ou métodos que envolvem uma operação de leitura repetível. Consulte a documentação do driver para determinar se um método oferece suporte explicitamente a leituras repetíveis.

Dica

Veja também:

As operações a seguir não oferecem suporte a leituras repetíveis:

  • db.collection.mapReduce()

  • getMore

  • Qualquer comando de leitura passado para um auxiliar genérico do Database.runCommand, que é agnóstico sobre comandos de leitura ou escrita.

As leituras que podem ser repetidas no MongoDB fazem apenas uma nova tentativa. Isso ajuda a resolver erros de rede transitórios ou eleições de conjuntos de réplicas, mas não erros de rede persistentes.

O driver realiza a seleção do servidor usando a preferência de leitura original do comando read antes de tentar novamente a operação de leitura. Se o driver não puder selecionar um servidor para a tentativa de repetição usando a preferência de leitura original, o driver retornará o erro original.

Os drivers aguardam serverSelectionTimeoutMS milésimos de segundo antes de executar a seleção do servidor. As leituras que podem ser repetidas não abordam instâncias em que não existem servidores qualificados após esperarserverSelectionTimeoutMS.

← Gravações repetíveis