Especifique campos para retornar
Nesta página
Visão geral
Neste guia, você pode aprender como 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.
Dados de amostra
Os exemplos neste guia utilizam a coleção do restaurants
no banco de dados de dados do sample_restaurants
a partir dos conjuntos de dados de amostra do Atlas. Para saber como criar um cluster MongoDB Atlas gratuito e carregar os conjuntos de dados de amostra, consulte o guia Iniciar com Atlas .
Os documentos nesta coleção são modelados pela seguinte classe de dados Kotlin :
data class Restaurant( val id: ObjectId? = null, val name: String, val borough: String, val cuisine: String )
Tipos de projeção
Você pode usar uma projeção para especificar quais campos incluir em um documento de devolução ou para especificar quais campos excluir.
Ao especificar determinados campos para incluir em uma projeção, todos os outros campos são implicitamente excluídos (exceto o campo _id
, que é incluído por padrão). Não é possível combinar declarações de inclusão e exclusão em uma única projeção, a menos que você esteja excluindo o campo _id
.
Para remover o campo _id
do documento retornado, você deve excluí-lo explicitamente.
Especifique campos a serem incluídos
Use a seguinte sintaxe para especificar os campos a serem incluídos no resultado:
val projection = Projection.fields( Projections.include(<fieldName1>, <fieldName2>, ...) )
O exemplo seguinte utiliza o método find()
para localizar todos os restaurantes com o valor de campo name
de "Emerald Pub"
. Em seguida, ele usa uma projeção para retornar somente os campos name
, cuisine
e borough
dos documentos retornados.
val projection = Projections.fields( Projections.include( Restaurant::name.name, Restaurant::cuisine.name, Restaurant::borough.name ) ) val results = collection .find(eq(Restaurant::name.name, "Emerald Pub")) .projection(projection) results.forEach { result -> println(result) }
Restaurant(id=5eb3d668b31de5d588f429e2, name=Emerald Pub, borough=Manhattan, cuisine=American) Restaurant(id=5eb3d668b31de5d588f432dd, name=Emerald Pub, borough=Queens, cuisine=American)
Exclua o _id
campo
Ao especificar campos a serem incluídos, você também pode excluir o campo _id
do documento retornado.
O exemplo seguinte executa a mesma query do exemplo anterior, mas exclui o campo _id
da projeção:
val projection = Projections.fields( Projections.excludeId(), Projections.include( Restaurant::name.name, Restaurant::cuisine.name, Restaurant::borough.name ) ) val results = collection .find(eq(Restaurant::name.name, "Emerald Pub")) .projection(projection) results.forEach { result -> println(result) }
Restaurant(id=null, name=Emerald Pub, borough=Manhattan, cuisine=American) Restaurant(id=null, name=Emerald Pub, borough=Queens, cuisine=American)
Informações adicionais
Para saber mais sobre projeções, consulte o guia Campos de projeto no manual do MongoDB Server .
Documentação da API
Para saber mais sobre qualquer um dos métodos ou tipos discutidos neste guia, consulte a seguinte documentação da API: