Visão geral
Neste guia, você pode aprender como utilizar o driver Java para configurar operações CRUD para instâncias do MongoClient.
As preferências de leitura, as write concerns e as read concerns controlam como o driver direciona as operações de leitura e espera a confirmação das operações de leitura e gravação quando conectado a um conjunto de réplicas do MongoDB. As preferências de leitura e as preocupações de leitura se aplicam a todas as operações de leitura; as write concerns se aplicam a todas as operações de gravação.
Para obter mais informações, consulte a documentação do servidor sobre preferências de leitura, read concerns e write concerns.
MongoDatabase e as instâncias MongoCollection herdam suas preferências e preocupações do MongoClient que as acessa. No entanto, você pode aplicar configurações personalizadas aos seus bancos de dados e coleções. Para obter mais informações, consulte a página Configurar configurações personalizadas de CRUD.
Você pode especificar configurações de CRUD no nível do cliente usando uma string de conexão ou passando um objeto MongoClientSettings para o construtor MongoClients. Selecione a aba Connection String ou MongoClientSettings para visualizar as opções disponíveis:
Inclua os seguintes parâmetros em sua string de conexão para modificar o comportamento de leitura ou escrita do driver:
Nome da opção | Tipo | Descrição |
|---|---|---|
| booleano | Especifica que o driver deve aguardar que a instância do MongoDB conectada faça o commit em grupo no arquivo de diário no disco para todas as gravações. Padrão: |
| string ou inteiro | Define a preocupação de gravação. Para obter mais informações sobre valores, consulte a documentação do MongoDB Server para a opção w. Padrão: |
| inteiro | Especifica um limite de tempo, em milésimos de segundo, para o preocupação de gravação. Para obter mais informações, consulte a documentação do MongoDB Server para a opção wtimeoutMS. Um valor de Padrão: |
| string | Especifica a preferência de leitura. Para obter mais informações sobre valores, consulte a documentação do MongoDB Server para a opção readPreference. Padrão: |
| string | Especifica as marcações de preferência de leitura . Para obter mais informações sobre valores, consulte a documentação do MongoDB Server para a opção readPreferenceTags. Padrão: |
| inteiro | Especifica, em segundos, o quão obsoleto um secundário pode ficar antes que o driver pare de se comunicar com esse secundário. O valor mínimo é 90 segundos ou a frequência de pulsação mais 10 segundos, o que for maior. Para obter mais informações, consulte a documentação do MongoDB Server para a opção maxStalenessSeconds. Não fornecer um parâmetro ou especificar explicitamente Padrão: |
| string | Especifica a representação do UUID a ser usada nas operações de leitura e gravação. Para obter mais informações, consulte a documentação do driver para o método MongoClientSettings.getUuidRepresentation(). Padrão: |
| booleano | Especifica que o driver deve repetir as operações de gravação com suporte se elas não puderem ser concluídas devido a um erro de rede. Padrão: |
| booleano | Especifica que o driver deve repetir as operações de leitura com suporte se não for possível concluir devido a um erro de rede. Padrão: |
| inteiro | Define o número máximo de vezes que o driver tenta novamente um comando que falha com um erro de sobrecarga que pode ser tentado novamente (ou seja, um erro que contém os rótulos Esta opção se aplica a comandos de gravar apenas quando Padrão: |
| booleano | Define se o driver pode despriorizar servidores durante a seleção de servidores para tentativas de repetição subsequentes se eles retornaram erros de sobrecarga anteriormente. Esta opção aplicar-se a leituras quando Padrão: |
O exemplo a seguir define a preferência de leitura para ler a partir do nó do conjunto de réplicas mais próximo:
ConnectionString connectionString = "mongodb://<host>:<port>/?readPreference=nearest"MongoClient mongoClient = MongoClients.create(connectionString)Para obter mais informações sobre esses parâmetros, consulte a documentação da API ConnectionString.
Encadeie os seguintes métodos ao construtor MongoClientSettings para modificar o comportamento de leitura/gravação do driver:
| Define se o driver pode despriorizar servidores durante a seleção de servidores para tentativas de repetição subsequentes se eles retornaram anteriormente erros de sobrecarga. Aplicar a leituras quando Padrão: |
| Define o número máximo de vezes que o driver tenta novamente um comando que falha com um erro de sobrecarga que pode ser tentado novamente (ou seja, um erro que contém os rótulos Padrão: |
| Define a preocupação de leitura. Documentação da API da página de manual do servidor |
| Define a preferência de leitura Padrão: |
| Se o driver realiza novas leituras se ocorrer um erro de rede. Padrão: |
| Se o driver realiza gravações repetidas se ocorrer um erro de rede. Padrão: |
| Define a representação UUID para utilizar ao codificar instâncias de UUID e decodificando valores binários BSON com subtipo de 3. |
| Define a write concern. Padrão: |
O exemplo a seguir define a preferência de leitura para ler a partir do nó do conjunto de réplicas mais próximo:
MongoClient mongoClient = MongoClients.create( MongoClientSettings.builder().applyConnectionString(new ConnectionString("<your connection string>")) .readPreference(ReadPreference.nearest()) .build());Para obter mais informações sobre esses métodos, consulte a documentação da API do MongoClientSettings.Builder.
Observação
Descarte de carga no Intelligent Gerenciamento de Carga de Trabalho (IWM)
Se erros com os rótulos SystemOverloadedError ou RetryableError estiverem causando falhas em seu aplicativo ou aparecendo em seus logs de aplicativo, o Load Shedding pode estar ativo em seu cluster e seu driver pode não ter sido atualizado para uma versão que o suporte. Recomendamos atualizar seu driver Java do MongoDB para a versão 5.8 ou posterior. Se você continuar a ver esses erros após a atualização, poderá resolvê-los por meio de alterações no lado do servidor, como revisar sua configuração de Load Shedding, ou por meio de alterações no lado do aplicativo, como implementar tratamento de erros personalizado ou limitação de solicitação do lado do cliente. Dependendo da sua situação, as alterações no lado do aplicativo podem ser preferíveis ou necessárias.
O Load Shedding é um recurso do IWM e ajuda a gerenciar a carga do servidor rejeitando operações em excesso durante a sobrecarga sustentada. Este recurso está disponível no MongoDB 9.0 e posterior.
Para obter mais informações sobre IWM ou como lidar com erros de sobrecarga, consulte a página Gerenciamento inteligente de carga de trabalho ou a página Erros de sobrecarga na documentação do Atlas.