Menu Docs
Página inicial do Docs
/ /

Especifique campos para retornar

Neste guia, você pode aprender como usar o driver Scala 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 Scala, crie um MongoClient que se conecte a um Atlas cluster e atribua os seguintes valores às suas variáveis database e collection:

val database: MongoDatabase = client.getDatabase("sample_restaurants")
val collection: MongoCollection[Document] = database.getCollection("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.

Você pode usar uma projeção para especificar quais campos incluir em um documento de devolução ou para especificar quais campos excluir. Você não pode combinar declarações de inclusão e exclusão em uma única projeção, a menos que esteja excluindo o campo _id .

Para especificar os campos a serem incluídos no resultado, encadeie o método projection() ao método find(). A classe Projections fornece o método assistente include() que você pode utilizar para definir os campos a serem incluídos.

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

collection
.find(equal("name", "Emerald Pub"))
.projection(include("name", "cuisine", "borough"))
.subscribe((doc: Document) => println(doc.toJson()),
(e: Throwable) => println(s"There was an error: $e"))
{"_id": {"$oid": "..."}, "borough": "Manhattan", "cuisine": "American", "name": "Emerald Pub"}
{"_id": {"$oid": "..."}, "borough": "Queens", "cuisine": "American", "name": "Emerald Pub"}

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

Ao especificar campos a serem incluídos, você também pode excluir o campo _id do documento retornado. A classe Projections fornece o método assistente excludeId() que você pode utilizar para omitir este campo.

O exemplo a seguir executa a mesma query do exemplo anterior, mas exclui o campo _id da projeção:

collection
.find(equal("name", "Emerald Pub"))
.projection(fields(include("name", "cuisine", "borough"), excludeId()))
.subscribe((doc: Document) => println(doc.toJson()),
(e: Throwable) => println(s"There was an error: $e"))
{"borough": "Manhattan", "cuisine": "American", "name": "Emerald Pub"}
{"borough": "Queens", "cuisine": "American", "name": "Emerald Pub"}

Para especificar os campos a serem excluídos do resultado, encadeie o método projection() ao método find(). A classe Projections fornece o método assistente exclude() que você pode utilizar para definir os campos a serem excluídos.

O exemplo a seguir usa o método find() para encontrar todos os restaurantes nos quais o valor do campo name é "Emerald Pub". Em seguida, o código chama os métodos projection() e exclude() para instruir a operação de busca a omitir os campos name e address no resultado:

collection
.find(equal("name", "Emerald Pub"))
.projection(exclude("name", "address"))
.subscribe((doc: Document) => println(doc.toJson()),
(e: Throwable) => println(s"There was an error: $e"))
{"_id": {"$oid": "..."}, "borough": "Manhattan", "cuisine": "American",
"grades": [...], "restaurant_id": "40367329"}
{"_id": {"$oid": "..."}, "borough": "Queens", "cuisine": "American",
"grades": [...], "restaurant_id": "40668598"}

Quando você usa 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 qualquer um dos métodos ou tipos discutidos neste guia, consulte a seguinte documentação da API:

Voltar

Especifique documentos a serem devolvidos

Nesta página