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

Especifique campos a serem retornados

Neste guia, você aprenderá a usar o driver Rust para especificar quais campos retornar de uma operação de leitura usando uma projeção}. Uma projeção é um documento que especifica quais campos o MongoDB retorna de uma query.

Os exemplos deste guia usam a restaurants coleção no sample_restaurants banco de dados dos conjuntos de dados de amostra do Atlas. Para acessar essa coleção a partir do seu aplicação Rust, crie um Client que se conecte a um Atlas cluster e atribua os seguintes valores às suas variáveis database collection e:

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

Para aprender a criar um cluster MongoDB Atlas gratuito e carregar os conjuntos de dados de amostra, consulte o Guia de Introdução do MongoDB.

Use uma projeção para especificar quais campos incluir ou excluir em um documento devolvido. Não é possível combinar declarações de inclusão e exclusão em uma única projeção, a menos que você exclua o campo _id.

Para incluir campos específicos no resultado de uma operação de leitura, especifique o método projection() no resultado de uma chamada de método find(). Passe um documento para o método projection() que especifique os campos a serem incluídos usando a seguinte sintaxe. Especifique um valor de 1 para incluir um campo no documento retornado e um valor de 0 para excluir um campo.

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

O exemplo a seguir usa o método find() para encontrar todos os restaurantes nos quais o valor do campo name é "Emerald Pub". O código então chama o método projection() para retornar somente os campos name, cuisine e borough de documentos correspondentes.

Selecione a aba Asynchronous ou Synchronous para ver o código correspondente para cada tempo de execução:

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")})

Ao usar uma projeção para especificar campos a serem incluídos no documento de retorno, o _id campo também é incluído por padrão. Todos os outros campos estão implicitamente excluídos. Para remover o _id campo do documento de retorno, exclua-o explicitamente.

Ao especificar campos a serem incluídos, você também pode excluir o campo _id do documento retornado.

O exemplo a seguir executa a mesma query do exemplo anterior, mas exclui o campo _id da projeção. Selecione a aba Asynchronous ou Synchronous para ver o código correspondente para cada tempo de execução:

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 um resultado de operação de leitura, especifique o método projection() no resultado de uma chamada de método find(). Passe um documento para o método projection() que especifica os campos a serem excluídos usando a seguinte sintaxe:

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

O exemplo a seguir usa o método find() para encontrar todos os restaurantes nos quais o valor do campo name é "Emerald Pub". O código então chama o método projection() para omitir os campos grades e address do resultado. Selecione a aba Asynchronous ou Synchronous para ver o código correspondente para cada tempo de execução:

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")})

Ao usar uma projeção para especificar quais campos excluir, quaisquer campos não especificados são implicitamente incluídos no documento de retorno.

Para saber mais sobre projeções, consulte o guia Campos de projeto no manual do MongoDB Server .

Para saber mais sobre o find() método, consulte a documentação da API find().

Voltar

Especifique documentos a serem devolvidos

Nesta página