# A classe MongoDB\Driver\ReadConcern

(mongodb >=1.1.0)

## Introdução

A classe MongoDB\Driver\ReadConcern controla o nível de isolamento para operações de leitura em conjuntos de réplicas e fragmentos de conjuntos de réplicas. Esta opção requer o MongoDB 3.2 ou posterior.

## Resumo da classe

final class MongoDB\Driver\ReadConcern implements MongoDB\BSON\Serializable, Serializable {
/* Propriedades */
public readonly ?string $level;
/* Constantes */
const string AVAILABLE = "available";
const string LINEARIZABLE = "linearizable";
const string LOCAL = "local";
const string MAJORITY = "majority";
const string SNAPSHOT = "snapshot";
/* Métodos */
final public function bsonSerialize(): stdClass
final public function __construct(?string `$level` = `null`)
final public function getLevel(): ?string
final public function isDefault(): bool
}

## Propriedades

level
  O nível de preocupação de leitura. `null` se nenhum nível foi especificado.

## Constantes predefinidas

`MongoDB\Driver\ReadConcern::AVAILABLE`
  Padrão para leitura de secundários quando `afterClusterTime` e `level` não são especificados. A consulta retorna os dados mais recentes da instância. Não fornece nenhuma garantia de que os dados foram gravados na maioria dos membros do conjunto de réplicas (ou seja, podem ser revertidos). Para coleções não fragmentadas (incluindo coleções em uma implantação autônoma ou uma implantação de conjunto de réplicas), as preocupações de leitura `"local"` e `"available"` se comportam de forma idêntica. Para um cluster fragmentado, a preocupação de leitura `"available"` fornece maior tolerância para partições, uma vez que não espera por garantias de consistência. No entanto, uma consulta com preocupação de leitura `"available"` pode retornar documentos órfãos se o fragmento estiver passando por migrações de blocos desde a preocupação de leitura `"available"`, ao contrário da preocupação de leitura `"local"`, que não entra em contato com o servidor primário do fragmento nem com os servidores de configuração para obter metadados atualizados.
`MongoDB\Driver\ReadConcern::LINEARIZABLE`
  A consulta retorna dados que refletem todas as gravações bem-sucedidas emitidas com uma preocupação de gravação de `"majority"` e reconhecida antes do início da operação de leitura. Para conjuntos de réplicas executados com `writeConcernMajorityJournalDefault` igual a `true`, a preocupação de leitura linearizável retorna dados que nunca serão revertidos. Com `writeConcernMajorityJournalDefault` igual a `false`, o MongoDB não esperará que as gravações `w: "majority"` sejam duráveis ​​antes de reconhecê-las. Como tal, as operações de gravação `"majority"` poderiam possivelmente ser revertidas no caso de perda de um membro do conjunto de réplicas. Pode-se especificar a preocupação de leitura linearizável apenas para operações de leitura no primário. As garantias de preocupação de leitura linearizáveis ​​só se aplicam se as operações de leitura especificarem um filtro de consulta que identifique exclusivamente um único documento.
  Dica

  Sempre use `maxTimeMS` com preocupação de leitura linearizável caso a maioria dos membros que contêm dados estejam indisponíveis. `maxTimeMS` garante que a operação não seja bloqueada indefinidamente e, em vez disso, garante que a operação retorne um erro se a preocupação de leitura não puder ser atendida.

  A preocupação de leitura linearizável requer MongoDB 3.4.
`MongoDB\Driver\ReadConcern::LOCAL`
  Padrão para leituras em relação ao primário se `level` não for especificado e para leituras em relação a secundários se `level` não for especificado, mas `afterClusterTime` for especificado. A consulta retorna os dados mais recentes da instância. Não fornece nenhuma garantia de que os dados foram gravados na maioria dos membros do conjunto de réplicas (ou seja, podem ser revertidos).
`MongoDB\Driver\ReadConcern::MAJORITY`
  A consulta retorna os dados mais recentes da instância reconhecidos como tendo sido gravados para a maioria dos membros do conjunto de réplicas. Para usar o nível de preocupação de leitura de `"majority"`, os conjuntos de réplicas devem usar o mecanismo de armazenamento WiredTiger e o protocolo de escolha versão 1.
`MongoDB\Driver\ReadConcern::SNAPSHOT`
  A preocupação de leitura `"snapshot"` está disponível para transações multi-documentos e, a partir do MongoDB 5.0, certas operações de leitura fora das transações multi-documentos. Se a transação não fizer parte de uma sessão causalmente consistente, após a confirmação da transação com preocupação de gravação `"majority"`, é garantido que as operações de transação tenham lido um instantâneo de dados confirmados pela maioria. Se a transação fizer parte de uma sessão causalmente consistente, após a confirmação da transação com preocupação de gravação `"majority"`, é garantido que as operações de transação tenham lido um instantâneo de dados confirmados pela maioria que fornece consistência causal com a operação imediatamente anterior ao início da transação. Fora das transações multi-documentos, a preocupação de leitura `"snapshot"` está disponíveis nos primários e secundários para as seguintes operações de leitura: `find`, `aggregate` e `distinct` (em coleções não fragmentadas). Todos os outros comandos de leitura proíbem `"snapshot"`.

## Registro de Alterações

Versão | Descrição
--- | ---
PECL mongodb 2.3.0 | Adicionadas propriedades públicas readonly.
PECL mongodb 1.11.0 | Adicionada a constante `MongoDB\Driver\ReadConcern::SNAPSHOT`.
PECL mongodb 1.7.0 | Implementa Serializable.
PECL mongodb 1.4.0 | Adicionada a constante `MongoDB\Driver\ReadConcern::AVAILABLE`.
PECL mongodb 1.2.0 | Adicionada a constante `MongoDB\Driver\ReadConcern::LINEARIZABLE`. Implementa MongoDB\BSON\Serializable.

## Veja Também

- » Referência de Preocupação de Leitura

## Índice

- MongoDB\Driver\ReadConcern::bsonSerialize — Retorna um objeto para serialização BSON
- MongoDB\Driver\ReadConcern::__construct — Cria uma nova preocupação de leitura
- MongoDB\Driver\ReadConcern::getLevel — Retorna o nível da preocupação de leitura
- MongoDB\Driver\ReadConcern::isDefault — Verifica se esta é a preocupação de leitura padrão

`↑` and `↓` to navigate • `Enter` to select • `Esc` to close • `/` to open