Leituras repetíveis
Nesta página
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.
Pré-requisitos
- Versão mínima do driver
Drivers MongoDB oficiais compatíveis com MongoDB Server 4.2 e posterior suportam leituras repetíveis.
Para mais informações sobre 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.
Habilitando leituras repetíveis
Os drivers oficiais do MongoDB compatíveis com o MongoDB Server 4.2 e posterior habilitam leituras repetíveis por padrão. Para desabilitar explicitamente as leituras repetitivas, especifique retryReads=false
na string de conexão do sistema.
mongosh
não oferece suporte a leituras repetíveis.
Operações de leitura repetível
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 | 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 é explicitamente compatível com leituras repetíveis.
Operações de leitura não suportadas
As operações a seguir não oferecem suporte a leituras repetíveis:
Qualquer comando de leitura passado para um auxiliar genérico do
Database.runCommand
, que é agnóstico sobre comandos de leitura ou escrita.
Comportamento
Erros de rede persistentes
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.
Período de failover
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
.