Menu Docs
Página inicial do Docs
/ / /
Driver de Kotlin Sync
/

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
  • Informações adicionais
  • Documentação da API

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.

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(
@BsonId
val id: ObjectId? = null,
val name: String,
val borough: String,
val cuisine: String
)

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.

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)

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)

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:

  • find()

  • projeção()

Voltar

Retrieve Data