Saltar al contenido principal

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

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