Join us at MongoDB.local London on 7 May to unlock new possibilities for your data. Use WEB50 to save 50%.
Register now >
Docs Menu
Docs Home
/ /

Especifique los campos a devolver

En esta guía, aprenderá a usar el controlador de Rust para especificar qué campos devolver en una operación de lectura mediante una proyección. Una proyección es un documento que especifica qué campos devuelve MongoDB en una consulta.

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 su aplicación Rust, cree un Client que se conecte a un clúster de Atlas y asigne los siguientes valores a sus variables database collection y:

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.

Utilice una proyección para especificar qué campos incluir o excluir en el documento devuelto. No puede combinar declaraciones de inclusión y exclusión en una sola proyección, a menos que excluya 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 utilizando la siguiente sintaxis. Especifique un valor de 1 para incluir un campo en el documento devuelto y un valor de 0 para excluirlo.

.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 sea "Emerald Pub". A continuación, el código llama al método projection() para devolver únicamente 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 usar una proyección para especificar los campos que se incluirán en el documento de respuesta, el _id campo también se incluye por defecto. Todos los demás campos se excluyen implícitamente. Para eliminar el _id campo del documento de respuesta, exclúyalo 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. Seleccione 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 del 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 excluir utilizando la siguiente sintaxis:

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

El siguiente ejemplo utiliza el método find() para encontrar todos los restaurantes cuyo valor en el campo name sea "Emerald Pub". A continuación, el código llama al método projection() para omitir los campos grades y address del resultado. Seleccione la pestaña Asynchronous o Synchronous para ver el código correspondiente a 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")})

Al utilizar una proyección para especificar qué campos excluir, cualquier campo no especificado se incluye implícitamente en el documento de respuesta.

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 find() método, consulte find(). Documentación de la API.

Volver

Especifica los documentos a devolver

En esta página