Busqueda con elemMatch
Parámetro elemMatch
​
El parámetro elemMatch
es un operador de consulta que se utiliza para buscar documentos en un arreglo que cumplan con los criterios especificados.
Los criterios de búsqueda se definen en un objeto donde la propiedad property
hace referencia al campo del arreglo y parameters
son los criterios de búsqueda.
Sintaxis elemMatch​
Los valores del parámetro elemMatch
pueden variar dependiendo de la consulta que se desee realizar siendo estos Unitaria o Múltiples.
Unitaria
// La key property es el nombre del campo en el arreglo y parameters son los criterios de búsqueda
elemMatch={
"property": "<nombre_campo>",
"parameters": {
"<campo_1>": "<valor_1>",
"<campo_2>": "<valor_2>",
...
}
}
Compuesto con múltiples campos
// Para realizar una búsqueda con múltiples criterios se debe enviar un arreglo de objetos donde cada elemento debe apuntar a un campo especÃfico
elemMatch=[
{
"property": "<nombre_campo_1>",
"parameters": {
"<campo_1>": "<valor_1>",
"<campo_2>": "<valor_2>",
...
}
},
{
"property": "<nombre_campo_2>",
"parameters": {
"<campo_1>": "<valor_1>",
"<campo_2>": "<valor_2>",
...
}
},
...
]
Ejemplos comunes​
Consultas a estudiantes sobre years
y addresses
:
Estructura estudiantesâ–¼
# Filtrar estudiantes que tengan un año especÃfico
GET /api/students?elemMatch={"property": "years", "parameters": {"year": "6487f7d00000000000000000"}}
# Filtrar estudiantes que tengan un año especÃfico y pertenezcan a una zona especÃfica
GET /api/students?elemMatch=[{"property": "years", "parameters": {"year": "6487f7d00000000000000000"}}, {"property": "addresses", "parameters": {"city_zone": "6487f7d00000000000000000"}}]
- Unitaria
- Multiple
Se puede realizar una búsqueda simple
En este caso, la API devolverá los estudiantes cuyo año corresponda al especificado.
GET /api/students?elemMatch={"property": "years", "parameters": {"year": "6487f7d00000000000000000"}}
{
"response": [
{
"_id": "60bc56500000000000000000",
"years": [
{
"year": "6487f7d00000000000000000",
"group": "6787f7d00100000000000001"
}
]
},
{
"_id": "60bc56500000000000000001",
"years": [
{
"year": "6487f7d00000000000000000",
"group": "6787f7d00100000000000000"
}
]
}
],
"errors": []
}
Para este ejemplo la API devolverá los estudiantes que tengan un año especÃfico y pertenezcan a una zona especÃfica.
GET /api/students?elemMatch=[{"property": "years", "parameters": {"year": "6487f7d00000000000000000"}}, {"property": "addresses", "parameters": {"city_zone": "6487f7d00000000000000001"}}]
{
"response": [
{
"_id": "60bc56500000000000000000",
...
"years": [
{
"year": "6487f7d00000000000000000",
"group": "6787f7d00100000000000001"
}
],
"addresses": [
{
"city_zone": "6487f7d00000000000000001",
}
]
},
{
"_id": "60bc56500000000000000001",
...
"years": [
{
"year": "6487f7d00000000000000000",
"group": "6787f7d00100000000000000"
}
],
"addresses": [
{
"city_zone": "6487f7d00000000000000001",
}
]
}
],
"errors": []
}