Búsqueda
Parámetros de consulta (filtros)
Los parámetros de consulta son pares clave-valor que se agregan a la URL de la solicitud.
Estos parámetros se componen del tipo clave-valor, separados por un signo de igual (=
), y se pueden agregar a la URL de la solicitud para filtrar los resultados.
En donde la clave es el campo por el que se desea filtrar y el valor es el contenido que se desea filtrar. Si se tiene más de un parámetro de consulta estos van unidos por el signo &
.
GET /api/students?email="student-1@mail.com"&years.year="6e1b56500000000000000000"
Para casos que se requiera filtrar por un campo específico que se encuentre anidado, se puede hacer uso de un punto (.
) para acceder a los campos anidados.
GET /api/students?field.nestedField="{value}"
Esto permite filtrar los resultados en base a los campos anidados de un objeto o un arreglo de objetos.
Sintaxis filtro
// Filtrar por _id
GET /api/students?_id="60bc56500000000000000000"
// Filtrar estudiantes estén dentro del año
GET /api/students?years.year="6e1b56500000000000000000"
// Filtrar los estudiantes que estén inscritos
GET /api/students?years.enrolled=true
Tambien puedes filtrar por varios campos a la vez:
// Filtrar estudiantes por año y que estén inscritos
GET /api/students?years.year="6e1b56500000000000000000"&years.enrolled=true
# Filtrar estudiantes por año
GET /api/students?years.year="6e1b56500000000000000000"
# Filtrar estudiantes que estén inscritos
GET /api/students?years.enrolled=true
# Filtrar estudiantes que estén registrados y en un grupo específico
GET /api/students?years.registered=true&years.group="6e1b56500000000000000000"
# Filtrar estudiantes por año y que estén inscritos
GET /api/students?years.year="6e1b56500000000000000000"&years.enrolled=true
Filtro a varios niveles
Esto es útil cuando necesitas buscar registros en base a los campos de un objeto anidado o un arreglo de objetos.
Sintaxis filtro a varios niveles
GET /api/students?addresses.name="Av. Napo"
GET /api/students?emergency.contacts.phones.mobile="+593999999999"
Ejemplos uso filtro a varios niveles
El filtrado a varios niveles permite buscar registros en base a los campos de un objeto anidado. Por ejemplo, para buscar estudiantes cuya dirección contenga la palabra clave "Av. Napo", puedes hacer lo siguiente:
- Ejemplo addresses
- Ejemplo emergency.contacts
GET /api/students?addresses.name="Av. Napo"
--------------------------------------------
{
"response": [
{
"_id": "60bc56500000000000000000",
"user": {
"_id": "61bc56500000000000000000",
"name": "John"
...
},
"addresses": [
{
"name": "Av. Napo",
"city": "Quito"
}
]
...
},
{
"_id": "60bc56500000000000000001",
"user": {
"_id": "61bc56500000000000000001",
"name": "Jane"
...
},
"addresses": [
{
"name": "Av. Napo",
"city": "Quito"
}
]
...
}
],
"errors": []
}
GET /api/students?emergency.contacts.phones.mobile="+593999999999"
--------------------------------------------
{
"response": [
{
"_id": "60bc56500000000000000000",
"user": {
"_id": "61bc56500000000000000000",
"name": "John"
...
},
"emergency": {
"contacts": [
{
"phones": [
{
"mobile": "+593999999999"
}
]
}
]
}
...
},
{
"_id": "60bc56500000000000000001",
"user": {
"_id": "61bc56500000000000000001",
"name": "Jane"
},
"emergency": {
"contacts": [
{
"phones": [
{
"mobile": "+593999999999"
}
]
}
]
}
...
}
],
"errors": []
}