Especifique como as operações CRUD são executadas em conjuntos de réplicas
Nesta página
- Visão geral
- Escreva preocupação
- Exemplo: definir o write concern para uma única operação de escrita
- Exemplo: recuperar e aplicar um write concern existente
- Preocupação de leitura
- Exemplo: definir o nível de referência de leitura de uma agregação
- Exemplo: alterar o read concern de um banco de dados
- readPreference
- Exemplo: definir read preference e concerns para uma transação
- Exemplo: definir a read preference de um cluster na connection string
- Documentação da API
Visão geral
Neste guia, você pode aprender como usar as configurações de referência de escrita, referência de leitura e preferência de leitura para modificar a maneira como o MongoDB executa as operações de criação, leitura, atualização e exclusão (CRUD) em conjuntos de réplicas.
É possível definir as opções de preocupação de gravação, preocupação de leitura e preferência de leitura nos seguintes níveis:
Cliente, que define o padrão para todas as execuções de operações, a menos que seja substituído
Sessão
transação
Database
collection
Essa lista também indica a ordem crescente de precedência das configurações de opções. Por exemplo, se você definir um nível de read concern para uma transação, ela substituirá um nível de read concern definido para o cliente.
Essas opções permitem a você personalizar a consistência causal e a disponibilidade dos dados em seus conjuntos de réplicas.
Escreva preocupação
A referência de escrita especifica o nível de confirmação solicitado ao MongoDB para operações de gravação, como uma inserção ou atualização, antes que a operação seja retornada com êxito. As operações que não especificam uma referência de escrita explícita herdam as configurações globais padrão de referência de escrita.
Para obter mais informações, consulte Write Concern no manual do servidor. Para obter documentação detalhada da API, consulte a documentação da API WriteConcern.
A tabela a seguir descreve os parâmetros WriteConcern
:
Parâmetro | Tipo | Descrição |
---|---|---|
w (Opcional) | Solicita a confirmação de que a operação de escrita se propagou para um número específico de mongod instâncias ou para mongod instâncias que são rotuladas como tags especificadas | |
wtimeoutMS (Opcional) | número | Especifica um limite de tempo para impedir que as operações de gravação sejam bloqueadas indefinidamente |
journal (Opcional) | booleano | Solicita confirmação de que a operação de escrita foi escrita no diário em disco |
Exemplo: definir o write concern para uma única operação de escrita
Este código utiliza configurações personalizadas do WriteConcern
ao criar um novo documento:
myDB.myCollection.insertOne( { name: "anotherDocumentName" }, { writeConcern: { w: 2, wtimeoutMS: 5000 } } );
Exemplo: recuperar e aplicar um write concern existente
Este código utiliza o método fromOptions()
para construir um WriteConcern
a partir das opções de uma referência de reconhecimento de data center existente, myDB
. Observe que myDB
pode ser substituído por uma referência a qualquer entidade que aceite uma opção de referência de escrita. Em seguida, a nova referência de escrita é aplicada a um documento, myDoc
.
const newWriteConcern = WriteConcern.fromOptions(myDB); const myDoc = { name: "New Document" }; WriteConcern.apply(myDoc,newWriteConcern);
Preocupação de leitura
A referência de leitura especifica os seguintes comportamentos:
Nível de consistência causal entre conjuntos de réplicas
Garantias de isolamento mantidas durante uma query
Você pode especificar a configuração da referência de leitura utilizando o parâmetro level
. O nível de referência de leitura padrão é local
. Isso significa que o cliente retorna os dados do membro do conjunto de réplicas ao qual o cliente está conectado, sem garantia de que os dados tenham sido gravados em todos os membros do conjunto de réplicas. Observe que requisitos mais baixos de nível de referência de leitura podem reduzir a latência.
Para obter mais informações sobre read concern ou níveis de read concern, consulte Read Concern no manual do servidor MongoDB. Para obter mais detalhes sobre o ReadConcern
tipo e definições dos níveis de read concern, consulte o ReadConcern na documentação da API.
Exemplo: definir o nível de referência de leitura de uma agregação
Este código define o nível de referência de leitura de uma aggregation como "majority"
:
const pipeline = [ {"$match": { category: "KITCHENWARE", }}, {"$unset": [ "_id", "category", ]} ]; result = await myDB.collection("mycollection") .aggregate( pipeline, { readConcern: { level: "available" } } );
Para mais informações sobre agregados, consulte a páginaAgregação do .
Exemplo: alterar o read concern de um banco de dados
Este código altera o nível de referência de leitura de um reconhecimento de data center para "local"
:
const options = { readConcern: { level: "local" } }; const myDB = client.db("mydb", options);
readPreference
A preferência de leitura determina qual membro de um conjunto de réplicas o MongoDB lê ao executar uma query. Você também pode personalizar como o servidor avalia os membros.
Para obter uma documentação da API mais detalhada,consulte a documentação da API ReadPreference.
A tabela a seguir descreve os parâmetros ReadPreference
:
Parâmetro | Tipo | Descrição |
---|---|---|
mode | Especifica um requisito ou preferência de qual membro do conjunto de réplicas o servidor lê. O modo padrão, primary , especifica que as operações são lidas a partir do nó primário do conjunto de réplicas. | |
tags (Opcional) | Atribui tags aos membros do conjunto de réplicas secundário para personalizar como o servidor os avalia. As tags não podem ser usadas com a configuração do modo de preferência de leitura primary . | |
options (Opcional) | Define várias opções, incluindo hedge e maxStalenessSeconds que podem ser aplicadas à sua preferência de leitura. |
Exemplo: definir read preference e concerns para uma transação
Este código define a preferência de leitura, referência de leitura e referência de escrita para as operações em uma transação:
const transactionOptions = { readPreference: "primary", readConcern: { level: "local" }, writeConcern: { w: "majority" }, }; const session = client.startSession(); session.startTransaction(transactionOptions); // ... await session.commitTransaction(); await session.endSession();
Para obter mais informações sobre transação, consulte transação.
Exemplo: definir a read preference de um cluster na connection string
Este exemplo de código cria um MongoClient que usa o modo de preferência de leitura "secundário" ao executar query em um cluster:
const uri = "mongodb+srv://<user>:<password>@<cluster-url>?readPreference=secondary&maxStalenessSeconds=120"; const client = new MongoClient(uri);
Este exemplo também define a opção maxStalenessSeconds
. Para obter mais informações sobre as opções de connection string , consulte a seção Opções de connection string no manual.
Documentação da API
Para saber mais sobre os métodos e tipos mencionados neste guia, consulte a documentação da API abaixo: