Para agentes de IA: hay un índice de documentación disponible en https://www.mongodb.com/es/docs/llms.txt — versiones en markdown de todas las páginas están disponibles agregando .md a cualquier ruta URL.
Docs Menu

APIs asíncronas y síncronas

En esta guía, puedes aprender sobre las API asíncronas y síncronas del driver Rust. Esta guía explica cómo habilitar las API disponibles y estructurar su código para utilizar cada una de ellas.

El driver de Rust admite tokio y async-std, dos cajas populares de time runtime asíncronas. Por defecto, el driver utiliza el runtime asíncrono tokio, pero puedes seleccionar un runtime específico agregando flags de características a la dependencia de mongodb en tu archivo Cargo.toml.

El driver también incluye una API síncrona para casos de uso que requieren bloqueo o cuando el paralelismo no es necesario. Puedes seleccionar la API síncrona añadiendo banderas de funcionalidad a la dependencia mongodb en tu archivo Cargo.toml.

El driver utiliza por defecto el tiempo de ejecución tokio. Puedes elegir explícitamente un tiempo de ejecución añadiendo los indicadores de funcionalidad "tokio-runtime" o "async-std-runtime" a la dependencia mongodb.

Selecciona entre las siguientes pestañas para ver cómo agregar flags de funcionalidades para cada caja correspondiente:

[dependencies.mongodb]
version = "2.8.2"
features = ["tokio-runtime"]
[dependencies.mongodb]
version = "2.8.2"
default-features = false
features = ["async-std"]

Para obtener más información sobre cómo instalar el driver y agregar banderas de funcionalidades, consulta el paso de Descargar e Instalar de la Guía de inicio rápido.

El siguiente código utiliza el módulo task de la caja tokio para crear tareas independientes y concurrentes para múltiples operaciones de datos:

let client = Client::with_uri_str("<connection string>").await?;
let some_data = doc! { "title": "1984", "author": "George Orwell" };
for i in 0..5 {
let client_ref = client.clone();
let somedata_ref = some_data.clone();
task::spawn(async move {
let collection = client_ref
.database("items")
.collection::<Document>(&format!("coll{}", i));
collection.insert_one(somedata_ref, None).await
});
}

El controlador también proporciona una API síncrona y bloqueante. Para usar la API síncrona, añade ya sea el indicador de funcionalidad "sync" o "tokio-sync" a la dependencia mongodb.

Selecciona entre las siguientes pestañas para ver cómo agregar flags de funcionalidades para cada caja correspondiente:

[dependencies.mongodb]
version = "2.8.2"
default-features = false
features = ["sync"]
[dependencies.mongodb]
version = "2.8.2"
default-features = false
features = ["tokio-sync"]

Al utilizar la API síncrona, use los tipos del módulo mongodb::sync para ejecutar operaciones. El siguiente código utiliza el módulo sync para insertar datos en una colección mediante la API síncrona. Cuando el método insert_one se ejecuta dentro del bucle for, el controlador espera a que cada solicitud se complete antes de continuar.

use mongodb::sync::Client;
fn main() {
let client = Client::with_uri_str("<connection string>")?;
let some_data = doc! { "title": "1984", "author": "George Orwell" };
for i in 0..5 {
let client_ref = client.clone();
let somedata_ref = some_data.clone();
let collection = client_ref
.database("items")
.collection::<Document>(&format!("coll{}", i));
collection.insert_one(somedata_ref, None);
}
}

Puede usar tanto APIs asincrónicas como sincrónicas en la misma aplicación. Por ejemplo, para habilitar ambos entornos de ejecución tokio, puede agregar la dependencia tokio a su lista de dependencias y agregar la bandera "tokio-sync" a la dependencia mongodb:

[dependencies]
futures = "0.3.28"
tokio = {version = "1.32.0", features = ["full"]}
[dependencies.mongodb]
version = "2.8.2"
features = ["tokio-sync"]

Para obtener más información sobre los conceptos de esta guía, consulta las siguientes páginas:

Para obtener más información sobre los métodos y tipos mencionados en esta guía, vea la siguiente documentación de la API: