Select de campos
Parámetro select
Para reducir el tamaño de la respuesta, puedes seleccionar los campos que deseas incluir en la respuesta mediante el parámetro de consulta select
.
Sintaxis select
- Cada campo que deseas incluir en la respuesta debe estar separado por un espacio en blanco, con el caracter
+
o formar parte de un objeto JSON con el campo y valor1
. - Para seleccionar campos anidados, debes especificar el campo padre y el campo hijo separados por un punto
.
. (Ejemplo:addresses.name
) - Soporta select de campos a varios niveles de anidación.
- Para obtener un registro de un arreglo, puedes utilizar el operador
$elemMatch
en el parámetroselect
. - Los campos que no se incluyan en el parámetro
select
no se mostrarán en la respuesta.
Formas de seleccionar campos:
- Seleccionar campos separados por espacio
GET /api/students?select="name surname"
GET /api/students?select="addresses.name citizenship relational_data.email"
- Seleccionar campos mediante un objeto JSON
GET /api/students?select={"name": 1, "surname": 1}
GET /api/students?select={"addresses.name": 1, "relational_data.email": 1}
- Seleccionar campos separados por el caracter
+
GET /api/students?select="name+surname"
GET /api/students?select="addresses.name+citizenship+relational_data.email"
Formato select con $elemMatch
Para obtener un registro de un arreglo, puedes utilizar el operador $elemMatch
en el parámetro select
.
La estructura de un $elemMatch
es la siguiente:
{
"<campo_arreglo>": {
"$elemMatch": {
"<campo_1>": "<valor_1>",
"<campo_2>": "<valor_2>",
...
}
}
}
Ejemplos comunes
Estructura estudiantes▼
Estos son algunos ejemplos de cómo puedes utilizar el parámetro select
en tus consultas:
- Ejemplo select
- Ejemplo select con elemMatch
En este caso, la API devolverá solo los estudiantes que tengan un año específico.
GET /api/students?select={"years": 1, "addresses.name": 1, "relational_data.email": 1, "citizenship": 1}
--------------------------------------------
{
"response": [
{
"_id": "60bc56500000000000000000",
"years": [
{
"year": "6487f7d00000000000000000",
"enrolled": true
},
{
"year": "6487f7d00000000000000001",
"enrolled": false
}
],
"addresses": [
{
"name": "Av. Napo"
}
],
"citizenship": "Ecuador",
"relational_data": {
"email": "sophie.student@mail.com"
}
},
{
"_id": "60bc56500000000000000001",
"years": [
{
"year": "6487f7d00000000000000001",
"enrolled": false
},
{
"year": "6487f7d00000000000000002",
"enrolled": false
}
],
"addresses": [
{
"name": "Av. NU"
}
],
"citizenship": "Ecuador",
"relational_data": {
"email": "steve.student@mail.com"
}
}
],
"errors": []
}
En este caso, la API devolverá solo los estudiantes que tengan un año específico.
GET /api/students?select={"years": {"$elemMatch": {"year": "6487f7d00000000000000000"}}}
--------------------------------------------
{
"response": [
{
"_id": "60bc56500000000000000000",
"years": [
{
"year": "6487f7d00000000000000000",
"enrolled": true
}
]
},
{
"_id": "60bc56500000000000000001",
"years": [
{
"year": "6487f7d00000000000000000",
"enrolled": true
}
]
}
],
"errors": []
}