Make the MongoDB docs better! We value your opinion. Share your feedback for a chance to win $100.
Click here >
Docs Menu
Docs Home
/ /

Configurar las operaciones CRUD

En esta guía, puedes aprender cómo configurar las operaciones de lectura y escritura en el driver de Rust.

Puedes controlar cómo el driver direcciona las operaciones de lectura configurando una preferencia de lectura. También puede controlar las opciones de cómo el driver espera la confirmación de las operaciones de lectura y escritura en un set de réplicas configurando un nivel de consistencia de lectura y un nivel de confirmación de escritura (write concern).

Por defecto, las bases de datos heredan estos ajustes de la Client la instancia y las colecciones las heredan de la base de datos. Sin embargo, puede establecer configuraciones personalizadas de lectura o guardar para una base de datos o colección utilizando la database_with_options() o collection_with_options() método. Estos métodos crean una nueva instancia de Database o Collection con la configuración especificada.

Para configurar los ajustes de lectura o escritura, crea una instancia del tipo ReadConcern, WriteConcern o SelectionCriteria y pásalos al generador de opciones.

Tip

Para obtener más información sobre la configuración de lectura y escritura, consulta las siguientes guías en el manual del servidor MongoDB:

Las siguientes secciones muestran cómo configurar tus ajustes de lectura y guardado a nivel de cliente, base de datos y colección.

Este ejemplo muestra cómo establecer la preferencia de lectura, el nivel de consistencia de lectura y el nivel de confirmación de escritura (write concern) de una instancia Client pasando un objeto ClientOptions al método Client::with_options(). El código configura los siguientes ajustes:

  • Secondary preferencia de lectura: Las operaciones de lectura recuperan datos de miembros secundarios del conjunto de réplicas

  • local nivel de consistencia de lectura: Las operaciones de lectura devuelven los datos más recientes de la instancia sin garantizar que los datos se hayan escrito en la mayoría de los miembros del conjunto de réplicas

  • Majority nivel de confirmación de escritura (write concern): La mayoría de todos los miembros del conjunto de réplicas deben reconocer la operación de escritura

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, puedes especificar la configuración de lectura y guardado en el URI de conexión y luego pasar el URI al constructor Client::with_uri_str() como se muestra en el siguiente ejemplo:

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

Este ejemplo muestra cómo configurar la preferencia de lectura, el nivel de consistencia de lectura y el nivel de confirmación de escritura (write concern) de una base de datos llamada test_database pasando un objeto DatabaseOptions al método database_with_options(). El código configura los siguientes ajustes:

  • PrimaryPreferred preferencia de lectura: Las operaciones de lectura recuperan datos desde el miembro principal del set de réplicas, o desde miembros secundarios si el principal no está disponible.

  • available nivel de consistencia de lectura: Las operaciones de lectura devuelven los datos más recientes de la instancia sin garantizar que los datos se hayan escrito en la mayoría de los miembros del conjunto de réplicas

  • majority nivel de confirmación de escritura (write concern): La mayoría de todos los miembros del conjunto de réplicas deben reconocer la operación de escritura

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 ejemplo muestra cómo establecer la preferencia de lectura, el nivel de consistencia de lectura y el nivel de confirmación de escritura (write concern) de una colección llamada test_collection pasando un objeto CollectionOptions al método collection_with_options(). El código configura los siguientes ajustes:

  • SecondaryPreferred preferencia de lectura: Las operaciones de lectura recuperan datos de los miembros secundarios del set de réplicas, o del primario si no hay secundarios disponibles.

  • available nivel de consistencia de lectura: Las operaciones de lectura devuelven los datos más recientes de la instancia sin garantizar que los datos se hayan escrito en la mayoría de los miembros del conjunto de réplicas

  • w: 0 nivel de confirmación de escritura (write concern): El cliente no solicita acuse de recibo de la operación de escritura

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);

El driver Rust vuelve a intentar automáticamente ciertas operaciones de lectura y guardado una vez si fallan debido a un error de red o servidor.

Puedes desactivar explícitamente las lecturas reintentables o las escrituras reintentables configurando la opción retry_reads o retry_writes a false al crear una instancia de ClientOptions. El siguiente ejemplo desactiva las lecturas y escrituras que pueden ser reintentadas para un cliente:

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

Para obtener más información sobre las operaciones de lectura repetibles admitidas, consulte Lecturas repetibles en el manual de MongoDB Server. Para obtener más información sobre las operaciones de escritura reintentables admitidas, consulta Escrituras reintentables en el manual del MongoDB Server.

Puedes especificar una intercalación para modificar el comportamiento de las operaciones de lectura y escritura. Una intercalación es un conjunto de reglas específicas de cada lenguaje para la comparación de strings, como las relacionadas con las mayúsculas y los signos diacríticos.

Para obtener más información sobre las intercalaciones y ver ejemplos de código, consulte el intercalación guide.

Para aprender más sobre cualquiera de los métodos o tipos analizados en esta guía, consulta la siguiente documentación de API:

Volver

Operaciones compuestas

En esta página