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

Especifique los campos a devolver

En esta guía, puedes aprender cómo usar el controlador de Rust para especificar qué campos devolver de una operación de lectura utilizando una proyección. Una proyección es un documento que especifica qué campos devuelve MongoDB a partir de una query.

Los ejemplos de esta guía utilizan el restaurants colección en la base de datos sample_restaurants de la Conjuntos de datos de muestra de Atlas. Para acceder a esta colección desde tu aplicación Rust, crea un Client que se conecte a un clúster Atlas y asigna los siguientes valores a tus variables database y collection:

let database = client.database("sample_restaurants");
let collection: Collection<Document> = database.collection("restaurants");

Para aprender cómo crear un clúster gratuito de MongoDB Atlas y cargar los conjuntos de datos de ejemplo, consulta la guía MongoDB Get Started.

Utiliza una proyección para especificar qué campos incluir o excluir en un documento devuelto. No puedes combinar instrucciones de inclusión y exclusión en una sola proyección, a menos que excluyas el campo _id.

Para incluir campos específicos en el resultado de una operación de lectura, especifique el método projection() en el resultado de una llamada al método find(). Pase un documento al método projection() que especifique los campos a incluir usando la siguiente sintaxis. Especifíca un valor de 1 para incluir un campo en el documento devuelto y un valor de 0 para excluir un campo.

.projection(doc! {
"<field_name>": 1, // Includes the field in the returned document
"_id": 0 // Excludes the _id field from the returned document
})

El siguiente ejemplo utiliza el método find() para encontrar todos los restaurantes en los que el valor del campo name es "Emerald Pub". El código luego llama al método projection() para devolver solo los campos name, cuisine y borough de los documentos coincidentes.

Selecciona el Asynchronous o la pestaña Synchronous para ver el código correspondiente para cada entorno de ejecución:

let filter = doc! { "name": "Emerald Pub" };
let mut cursor = collection
.find(filter)
.projection(doc! { "name": 1, "cuisine": 1, "borough": 1 })
.await?;
while let Some(result) = cursor.try_next().await? {
println!("{:?}", result);
}
Document({"_id": ObjectId("..."), "borough": String("Manhattan"), "cuisine": String("American"), "name": String("Emerald Pub")})
Document({"_id": ObjectId("..."), "borough": String("Queens"), "cuisine": String("American"), "name": String("Emerald Pub")})
let filter = doc! { "name": "Emerald Pub" };
let mut cursor = collection
.find(filter)
.projection(doc! { "name": 1, "cuisine": 1, "borough": 1 })
.run()?;
for result in cursor {
println!("{:?}", result?);
}
Document({"_id": ObjectId("..."), "borough": String("Manhattan"), "cuisine": String("American"), "name": String("Emerald Pub")})
Document({"_id": ObjectId("..."), "borough": String("Queens"), "cuisine": String("American"), "name": String("Emerald Pub")})

Al utilizar una proyección para especificar los campos que se van a incluir en el documento de retorno, el campo _id también se incluye por defecto. Todos los demás campos quedan implícitamente excluidos. Para remover el campo _id del documento de retorno, exclúyelo explícitamente.

Al especificar los campos a incluir, también puedes excluir el campo _id del documento devuelto.

El siguiente ejemplo realiza la misma consulta que el ejemplo anterior, pero excluye el campo _id de la proyección. Selecciona la pestaña Asynchronous o Synchronous para ver el código correspondiente para cada entorno de ejecución:

let filter = doc! { "name": "Emerald Pub" };
let mut cursor = collection.find(filter)
.projection(doc! { "name": 1, "cuisine": 1, "borough": 1, "_id": 0 })
.await?;
while let Some(result) = cursor.try_next().await? {
println!("{:?}", result);
}
Document({"borough": String("Manhattan"), "cuisine": String("American"), "name": String("Emerald Pub")})
Document({"borough": String("Queens"), "cuisine": String("American"), "name": String("Emerald Pub")})
let filter = doc! { "name": "Emerald Pub" };
let mut cursor = collection.find(filter)
.projection(doc! { "name": 1, "cuisine": 1, "borough": 1, "_id": 0 })
.run()?;
for result in cursor {
println!("{:?}", result?);
}
Document({"borough": String("Manhattan"), "cuisine": String("American"), "name": String("Emerald Pub")})
Document({"borough": String("Queens"), "cuisine": String("American"), "name": String("Emerald Pub")})

Para excluir campos específicos de un resultado de operación de lectura, especifica el método projection() en el resultado de una llamada al método find(). Pase un documento al método projection() que especifique los campos a excluir usando la siguiente sintaxis:

.projection(doc! { "<field_name>": 0 })

El siguiente ejemplo utiliza el método find() para encontrar todos los restaurantes en los que el valor del campo name es "Emerald Pub". A continuación, el código llama al método projection() para omitir los campos grades y address del resultado. Selecciona la pestaña Asynchronous o Synchronous para ver el código correspondiente para cada entorno de ejecución:

let filter = doc! { "name": "Emerald Pub" };
let mut cursor = collection.find(filter)
.projection(doc! { "grades": 0, "address": 0 })
.await?;
while let Some(result) = cursor.try_next().await? {
println!("{:?}", result);
}
Document({"_id": ObjectId("..."), "borough": String("Manhattan"), "cuisine": String("American"), "name": String("Emerald Pub"), "restaurant_id": String("40367329")})
Document({"_id": ObjectId("..."), "borough": String("Queens"), "cuisine": String("American"), "name": String("Emerald Pub"), "restaurant_id": String("40668598")})
let filter = doc! { "name": "Emerald Pub" };
let mut cursor = collection.find(filter)
.projection(doc! { "grades": 0, "address": 0 })
.run()?;
for result in cursor {
println!("{:?}", result?);
}
Document({"_id": ObjectId("..."), "borough": String("Manhattan"), "cuisine": String("American"), "name": String("Emerald Pub"), "restaurant_id": String("40367329")})
Document({"_id": ObjectId("..."), "borough": String("Queens"), "cuisine": String("American"), "name": String("Emerald Pub"), "restaurant_id": String("40668598")})

Cuando se utiliza una proyección para especificar qué campos excluir, los campos no especificados se incluyen implícitamente en el documento devuelto.

Para obtener más información sobre las proyecciones, consulte la guía de Campos del proyecto en el manual de MongoDB Server.

Para obtener más información sobre el método find(), consulta la find() Documentación de la API.

Volver

Especifica los documentos a devolver

En esta página