Saltar al contenido principal

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 valor 1.
  • 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ámetro select.
  • Los campos que no se incluyan en el parámetro select no se mostrarán en la respuesta.

Formas de seleccionar campos:

  1. Seleccionar campos separados por espacio
GET /api/students?select="name surname"
GET /api/students?select="addresses.name citizenship relational_data.email"
  1. 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}
  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:

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": []
}