Menu Docs
Página inicial do Docs
/ / /
Scala
/

Especifique campos para retornar

Nesta página

  • Visão geral
  • Dados de amostra
  • Tipos de projeção
  • Especifique campos a serem incluídos
  • Exclua o campo _id
  • Especifique campos a serem excluídos
  • Informações adicionais
  • Documentação da API

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 collection e:

val database: MongoDatabase = client.getDatabase("sample_restaurants")
val collection: MongoCollection[Document] = database.getCollection("restaurants")

Para saber como criar um cluster MongoDB Atlas gratuito e carregar os conjuntos de dados de amostra, consulte o guia Iniciar com Atlas .

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