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

Referencia rápida

En esta página, puedes ver ejemplos que utilizan el controlador Rust para realizar varias tareas comunes de MongoDB. Cada fila de la siguiente tabla describe la tarea, muestra la sintaxis del controlador para ejecutar la tarea e incluye enlaces a la referencia y documentación API relacionada.

El controlador Rust ofrece un entorno de ejecución asíncrono para ejecutar aplicaciones asíncronas. Además, el driver admite un entorno de ejecución síncrono bloqueante. Para cada tarea de MongoDB que aparece en la siguiente tabla, puedes ver ejemplos que utilizan tanto las API asincrónicas como las sincrónicas.

Tip

Para aprender más sobre runtimes asíncronos y síncronos, consulta la guía API asíncronas y síncronas.

Comando
Sintaxis

Tiempo de ejecución asíncrono

let result = collection.find_one(
doc! { "title": "Peter Pan" },
None
).await?;

Sincroniza el entorno de ejecución

let result = collection.find_one(
doc! { "title": "Peter Pan" },
None
)?;

Tiempo de ejecución asíncrono

let filter = doc! { "year": 1925 };
let mut cursor = collection.find(filter, None).await?;

Sincroniza el entorno de ejecución

let filter = doc! { "year": 1925 };
let mut cursor = collection.find(filter, None)?;

Tiempo de ejecución asíncrono

let doc = doc! {
"title": "Mistress America", "type": "movie"
};
let result = collection.insert_one(doc, None).await?;

Sincroniza el entorno de ejecución

let doc = doc! {
"title": "Mistress America", "type": "movie"
};
let result = collection.insert_one(doc, None)?;

Tiempo de ejecución asíncrono

let docs = vec![
doc! { "title": "Friends With Money", "runtime": 88 },
doc! { "title": "Please Give", "runtime": 90 },
doc! { "title": "You Hurt My Feelings", "runtime": 93 },
];
let result = collection.insert_many(docs, None).await?;

Sincroniza el entorno de ejecución

let docs = vec![
doc! { "title": "Friends With Money", "runtime": 88 },
doc! { "title": "Please Give", "runtime": 90 },
doc! { "title": "You Hurt My Feelings", "runtime": 93 },
];
let result = collection.insert_many(docs, None)?;

Tiempo de ejecución asíncrono

let filter = doc! { "title": "Burn After Reading"};
let update =
doc! {
"$set": doc!{ "num_mflix_comments": 1 }
};
let result = collection.update_one(
filter, update, None
).await?;

Sincroniza el entorno de ejecución

let filter = doc! { "title": "Burn After Reading"};
let update =
doc! {
"$set": doc!{ "num_mflix_comments": 1 }
};
let result = collection.update_one(
filter, update, None
)?;

Tiempo de ejecución asíncrono

let filter = doc! { "rated": "PASSED"};
let update =
doc! {
"$set": doc!{ "rated": "Not Rated" }
};
let result = collection.update_many(
filter, update, None
).await?;

Sincroniza el entorno de ejecución

let filter = doc! { "rated": "PASSED"};
let update =
doc! {
"$set": doc!{ "rated": "Not Rated" }
};
let result = collection.update_many(
filter, update, None
)?;

Tiempo de ejecución asíncrono

let filter = doc! { "title": "è Nous la Libertè" };
let replacement =
doc! {
"title": "À nous la liberté",
"type": "movie",
"directors": vec! [ "René Clair" ]
};
let result = collection.replace_one(
filter, replacement, None
).await?;

Sincroniza el entorno de ejecución

let filter = doc! { "title": "è Nous la Libertè" };
let replacement =
doc! {
"title": "À nous la liberté",
"type": "movie",
"directors": vec! [ "René Clair" ]
};
let result = collection.replace_one(
filter, replacement, None
)?;

Tiempo de ejecución asíncrono

let filter = doc! { "title": "Search and Destroy" };
let result = collection.delete_one(filter, None).await?;

Sincroniza el entorno de ejecución

let filter = doc! { "title": "Search and Destroy" };
let result = collection.delete_one(filter, None)?;

Tiempo de ejecución asíncrono

let filter = doc! {
"year": doc! { "$lt": 1920 }
};
let result = collection.delete_many(filter, None).await?;

Sincroniza el entorno de ejecución

let filter = doc! {
"year": doc! { "$lt": 1920 }
};
let result = collection.delete_many(filter, None)?;

Acceder a datos de un cursor iterativamente

Documentación de la API
Fundamentals Guide

Tiempo de ejecución asíncrono

let mut cursor = collection.find(
doc! { "$and": vec!
[
doc! { "metacritic": doc! { "$gt": 90 } },
doc! { "directors": vec! [ "Martin Scorsese" ] }
] },
None
).await?;
while let Some(result) = cursor.try_next().await? {
println!("{}", result);
};

Sincroniza el entorno de ejecución

let cursor = collection.find(
doc! { "$and": vec!
[
doc! { "metacritic": doc! { "$gt": 90 } },
doc! { "directors": vec! [ "Martin Scorsese" ] }
] },
None
)?;
for result in cursor {
println!("{}", result?);
}

Acceder a datos de un cursor como un arreglo

Documentación de la API
Fundamentals Guide

Tiempo de ejecución asíncrono

let cursor = collection.find(
doc! { "title": "Secrets & Lies" }, None
).await?;
let results: Vec<Document> = cursor.try_collect().await?;

Sincroniza el entorno de ejecución

let cursor = collection.find(
doc! { "title": "Secrets & Lies" }, None
)?;
let results: Vec<Result<Document>> = cursor.collect();

Tiempo de ejecución asíncrono

let filter = doc! {
"languages": vec! [ "Mandarin" ]
};
let result = collection.count_documents(filter, None).await?;

Sincroniza el entorno de ejecución

let filter = doc! {
"languages": vec! [ "Mandarin" ]
};
let result = collection.count_documents(filter, None)?;

Listar valores distintos de un campo

Documentación de la API
Usage Example

Tiempo de ejecución asíncrono

let field_name = "title";
let filter = doc! {
"directors": vec! [ "Sean Baker" ]
};
let results = collection.distinct(
field_name, filter, None
).await?;

Sincroniza el entorno de ejecución

let field_name = "title";
let filter = doc! {
"directors": vec! [ "Sean Baker" ]
};
let results = collection.distinct(
field_name, filter, None
)?;

Limita el número de document recuperados

Documentación de la API

Tiempo de ejecución asíncrono

let opts: FindOptions = FindOptions::builder()
.limit(5)
.build();
let filter = doc! { "awards.wins": 25};
let mut cursor = collection.find(filter, opts).await?;

Sincroniza el entorno de ejecución

let opts: FindOptions = FindOptions::builder()
.limit(5)
.build();
let filter = doc! { "awards.wins": 25};
let mut cursor = collection.find(filter, opts)?;

Saltar documentos recuperados

Documentación de la API

Tiempo de ejecución asíncrono

let opts: FindOptions = FindOptions::builder()
.skip(1)
.build();
let filter = doc! { "runtime": 100 };
let mut cursor = collection.find(filter, opts).await?;

Sincroniza el entorno de ejecución

let opts: FindOptions = FindOptions::builder()
.skip(1)
.build();
let filter = doc! { "runtime": 100 };
let mut cursor = collection.find(filter, opts)?;

Ordenar los documentos al recuperarlos

Documentación de la API

Tiempo de ejecución asíncrono

let opts: FindOptions = FindOptions::builder()
.sort(doc! { "imdb.rating": 1 })
.build();
let filter = doc! {
"directors": vec! [ "Nicole Holofcener" ]
};
let mut cursor = collection.find(filter, opts).await?;

Sincroniza el entorno de ejecución

let opts: FindOptions = FindOptions::builder()
.sort(doc! { "imdb.rating": 1 })
.build();
let filter = doc! {
"directors": vec! [ "Nicole Holofcener" ]
};
let mut cursor = collection.find(filter, opts)?;

Campos de Document del Proyecto al Recuperarlos

Documentación de la API

Tiempo de ejecución asíncrono

let opts: FindOptions = FindOptions::builder()
.projection(doc! { "title": 1, "metacritic": 1, "_id": 0 })
.build();
let filter = doc! { "year": 2015 };
let mut cursor = collection.find(filter, opts).await?;

Sincroniza el entorno de ejecución

let opts: FindOptions = FindOptions::builder()
.projection(doc! { "title": 1, "metacritic": 1, "_id": 0 })
.build();
let filter = doc! { "year": 2015 };
let mut cursor = collection.find(filter, opts)?;

Crear un índice

Documentación de la API

Tiempo de ejecución asíncrono

let index: IndexModel = IndexModel::builder()
.keys(doc! { "title": 1 })
.build();
let result = collection.create_index(index, None).await?;

Sincroniza el entorno de ejecución

let index: IndexModel = IndexModel::builder()
.keys(doc! { "title": 1 })
.build();
let result = collection.create_index(index, None)?;