Join us at MongoDB.local London on 7 May to unlock new possibilities for your data. Use WEB50 to save 50%.
Register now >
Menu Docs
Página inicial do Docs
/ /

Configurar operações CRUD

Neste guia, você pode aprender como configurar as operações de leitura e gravação no driver Rust.

Você pode controlar como o driver direciona as operações de leitura definindo uma read preference. Você também pode controlar as opções de como o driver aguarda a confirmação das operações de leitura e gravação em um conjunto de réplicas, definindo uma read concern e uma write concern.

Por padrão, os bancos de dados herdam estas configurações da Client instância, e as collections as herdam do banco de dados. No entanto, você pode definir configurações personalizadas de leitura ou gravação para um banco de dados ou coleção usando o database_with_options () ou collection_with_options () . Estes métodos criam uma nova Database Collection instância ou com as configurações especificadas.

Para definir as configurações de leitura ou gravação, crie uma instância do tipo ReadConcern, WriteConcern ou CollectionCriteria e passe-a para o construtor de opções.

Dica

Para saber mais sobre as configurações de leitura e gravação, consulte os seguintes guias no manual do MongoDB Server :

As seções a seguir mostram como definir suas configurações de leitura e gravação nos níveis de cliente, banco de dados e coleção.

Este exemplo mostra como definir a preferência de leitura, preocupação de leitura e preocupação de gravação de uma Client instância passando um ClientOptions objeto para o método Client::with_options(). O código define as seguintes configurações:

  • Secondary preferência de leitura: Operações de leitura recuperam dados de nós secundários do conjunto de réplicas

  • local preocupação de leitura: As operações de leitura retornam os dados mais recentes da instância sem garantir que os dados tenham sido gravados na maioria dos membros do conjunto de réplicas

  • Majority preocupação de gravação: A maioria de todos os membros do conjunto de réplicas deve reconhecer a operação de escrita

let read_preference = ReadPreference::Secondary {
options: Default::default(),
};
let selection_criteria = SelectionCriteria::ReadPreference(read_preference);
let read_concern = ReadConcern::local();
let write_concern = WriteConcern::builder().w(Acknowledgment::Majority).build();
let client_options = ClientOptions::builder()
.selection_criteria(selection_criteria)
.read_concern(read_concern)
.write_concern(write_concern)
.build();
let client = Client::with_options(client_options)?;

Como alternativa, você pode especificar as configurações de leitura e gravação no URI de conexão e, em seguida, passar o URI para o construtor Client::with_uri_str() , conforme mostrado no exemplo a seguir:

let uri = "<connection string>/?readPreference=secondary&readConcernLevel=local&w=majority";
let client = Client::with_uri_str(uri).await?;

Este exemplo mostra como definir a preferência de leitura, preocupação de leitura e preocupação de gravação de um banco de dados chamado test_database passando um DatabaseOptions objeto para o método database_with_options(). O código define as seguintes configurações:

  • PrimaryPreferred preferência de leitura: as operações de leitura recuperam dados do membro primário do conjunto de réplicas ou de membros secundários se o primário não estiver disponível

  • available preocupação de leitura: As operações de leitura retornam os dados mais recentes da instância sem garantir que os dados tenham sido gravados na maioria dos membros do conjunto de réplicas

  • majority preocupação de gravação: A maioria de todos os membros do conjunto de réplicas deve reconhecer a operação de escrita

let read_preference = ReadPreference::PrimaryPreferred {
options: Default::default(),
};
let selection_criteria = SelectionCriteria::ReadPreference(read_preference);
let read_concern = ReadConcern::available();
let write_concern = WriteConcern::majority();
let database_options = DatabaseOptions::builder()
.selection_criteria(selection_criteria)
.read_concern(read_concern)
.write_concern(write_concern)
.build();
let database = client.database_with_options("test_database", database_options);

Este exemplo mostra como definir a preferência de leitura, preocupação de leitura e preocupação de gravação de uma collection chamada test_collection passando um CollectionOptions objeto para o método collection_with_options(). O código define as seguintes configurações:

  • SecondaryPreferred preferência de leitura: as operações de leitura recuperam dados dos nós secundários do conjunto de réplicas ou do nó primário se nenhum secundário estiver disponível

  • available preocupação de leitura: As operações de leitura retornam os dados mais recentes da instância sem garantir que os dados tenham sido gravados na maioria dos membros do conjunto de réplicas

  • w: 0 preocupação de gravação: O cliente não solicita confirmação da operação de escrita

let read_preference = ReadPreference::SecondaryPreferred {
options: Default::default(),
};
let selection_criteria = SelectionCriteria::ReadPreference(read_preference);
let read_concern = ReadConcern::available();
let write_concern = WriteConcern::builder().w(0.into()).build();
let collection_options = CollectionOptions::builder()
.selection_criteria(selection_criteria)
.read_concern(read_concern)
.write_concern(write_concern)
.build();
let collection = database.collection_with_options("test_collection", collection_options);

O driver Rust repete automaticamente determinadas operações de leitura e gravação uma vez se elas falharem devido a um erro de rede ou servidor .

Você pode desabilitar explicitamente as leituras ou gravações repetíveis definindo a opção retry_reads ou retry_writes como false ao criar uma instância ClientOptions. O exemplo a seguir desativa leituras e gravações repetíveis para um cliente:

let client_options = ClientOptions::builder()
.retry_reads(false)
.retry_writes(false)
.build();
let client = Client::with_options(client_options)?;

Para saber mais sobre as operações de leitura repetível com suporte, consulte Leituras repetíveis no manual do MongoDB Server . Para saber mais sobre as operações de gravações repetíveis com suporte, consulte Retryable writes no manual do MongoDB Server .

Você pode especificar um agrupamento para modificar o comportamento das operações de leitura e gravação. Um agrupamento é um conjunto de regras específicas do idioma para comparação de cadeias de caracteres, como para letras maiúsculas e minúsculas e acentos.

Para obter mais informações sobre agrupamentos e para visualizar exemplos de código, consulte o guia de Agrupamentos do.

Para saber mais sobre qualquer um dos métodos ou tipos discutidos neste guia, consulte a seguinte documentação da API:

Voltar

Operações compostas

Nesta página