Docs Menu
Docs Home
/ /

Especificar campos a devolver

En esta guía, aprenderá a especificar los campos que se devolverán de una operación de lectura mediante una proyección. Una proyección es un documento que especifica los campos que MongoDB devuelve de una consulta.

Los ejemplos de esta guía utilizan el restaurants colección en la base de datos sample_restaurants de la Conjuntos de datos de muestra de Atlas. Para aprender a crear una implementación gratuita de MongoDB y cargar los conjuntos de datos de muestra, consulte la guía de introducción a MongoDB.

Los documentos de esta colección están modelados por la siguiente clase de datos de Kotlin:

data class Restaurant(
@BsonId
val id: ObjectId? = null,
val name: String,
val borough: String,
val cuisine: String
)

Puede utilizar una proyección para especificar qué campos incluir en un documento de devolución o para especificar qué campos excluir.

Al especificar ciertos campos para incluir en una proyección, todos los demás se excluyen implícitamente (excepto el campo _id, que se incluye por defecto). No se pueden combinar declaraciones de inclusión y exclusión en una sola proyección, a menos que se excluya el campo _id.

Para eliminar el _id campo del documento devuelto, debe excluirlo explícitamente.

Utiliza la siguiente sintaxis para especificar los campos que deseas incluir en el resultado:

val projection = Projection.fields(
Projections.include(<fieldName1>, <fieldName2>, ...)
)

El siguiente ejemplo utiliza el método find() para buscar todos los restaurantes cuyo valor de campo name sea "Emerald Pub". A continuación, utiliza una proyección para devolver solo los campos name, cuisine y borough de los documentos devueltos.

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)

Al especificar los campos a incluir, también puede excluir el campo _id del documento devuelto.

El siguiente ejemplo ejecuta la misma consulta que el ejemplo anterior, pero excluye el campo _id de la proyección:

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 obtener más información sobre las proyecciones, consulte la guía Campos del proyecto en el Manual del servidor MongoDB.

Para obtener más información sobre cualquiera de los métodos o tipos discutidos en esta guía, consultar la siguiente documentación de la API:

  • find()

  • proyección()

Volver

Especifica los documentos a devolver

En esta página