Para agentes de IA: um índice de documentação está disponível em https://www.mongodb.com/pt-br/docs/llms.txt — as versões de markdown de todas as páginas estão disponíveis anexando .md a qualquer caminho de URL.
Menu 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 essas 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 método 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 SelectionCriteria 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 gravar 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 instância Client passando um objeto ClientOptions 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 objeto DatabaseOptions 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 coleção chamada test_collection passando um objeto CollectionOptions 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 exibir exemplos de código, consulte o guia Agrupamentos.

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