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 6.0 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 6.0 ou posterior.
Habilitando leituras repetíveis
Os drivers oficiais do MongoDB compatíveis com o MongoDB Server 6.0 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 | 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.
Dica
Especificação de leitura repetível: Operações de leiturasuportadas
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
.