Para agentes de IA: hay un índice de documentación disponible en https://www.mongodb.com/es/docs/llms.txt — versiones en markdown de todas las páginas están disponibles agregando .md a cualquier ruta URL.
Docs Menu

$match (etapa de agregación)

$match

Filtra documentos en función de un predicado de query especificado. Los documentos que coinciden se pasan a la siguiente etapa del pipeline.

Puedes usar $match para implementaciones alojadas en los siguientes entornos:

  • MongoDB Atlas: El servicio totalmente administrado para implementaciones de MongoDB en la nube.
  • MongoDB Enterprise: La versión basada en suscripción y autogestionada de MongoDB

  • MongoDB Community: La versión de MongoDB con código fuente disponible, de uso gratuito y autogestionada.

{ $match: { <query predicate> } }

La sintaxis del predicado de query $match es idéntica a la sintaxis utilizada en el argumento query de un comando find().

Para incluir expresiones en un predicado de query, utiliza el operador $expr.

Una etapa $match filtra un documento de los resultados del pipeline si se aplica una de las siguientes condiciones:

  • El predicado de query $match devuelve un valor 0, null o false en ese documento.

  • El predicado de query $match utiliza un campo que falta en ese documento.

Para los datos almacenados en MongoDB Atlas, puede usar la opción filter del operador compuesto de búsqueda de MongoDB para buscar o filtrar documentos al ejecutar consultas $search. Ejecutar $match después de $search tiene un rendimiento inferior al de ejecutar $search con la opción filter del operador compuesto.

Para obtener más información sobre la opción filter, consulta operador compuesto en la documentación de Atlas.

Los ejemplos de esta página utilizan datos del conjunto de datos sample_mflix. Para obtener más información sobre cómo cargar este conjunto de datos en la implementación autogestionada de MongoDB, consultar Cargar el conjunto de datos de muestra. Si realizó alguna modificación en las bases de datos de muestra, es posible que deba descartar y volver a crear las bases de datos para ejecutar los ejemplos de esta página.

La siguiente operación utiliza $match para realizar una comparación de igualdad en el campo rated. El filtro runtime limita el resultado a un conjunto pequeño y representativo:

db.movies.aggregate(
[ { $match : { rated : "TV-PG", runtime : { $gt: 1000 } } } ]
)

El $match selecciona los documentos donde el campo rated es igual a "TV-PG" y runtime es mayor que 1000.

El siguiente ejemplo selecciona los documentos que se van a procesar utilizando el operador de canalización $match y luego envía los resultados al operador de canalización $group para calcular el número de documentos:

db.movies.aggregate( [
{ $match: { $or: [
{ runtime: { $gt: 1000 } },
{ year: { $lt: 1910 } }
] } },
{ $group: { _id: null, count: { $sum: 1 } } }
] )
[ { _id: null, count: 6 } ]

En el proceso de agregación, $match selecciona los documentos donde runtime es mayor que 1000 o year es anterior a 1910. Estos documentos se envían luego a $group para realizar un recuento.

Para filtrar documentos según los elementos de un campo de arreglo, utiliza el operador $elemMatch en el predicado de query de la etapa $match:

db.aggregate( [
{
$documents: [
{ student_id: 1, scores: [ 0.75, 0.65, 0.73 ] },
{ student_id: 2, scores: [ 0.9, 0.88, 0.98 ] },
{ student_id: 3, scores: [ 0.9, 0.84, 0.93 ] }
]
}, {
$match: {
scores: { $elemMatch: { $gte: 0.9 } }
}
}
] )
[
{ student_id: 2, scores: [ 0.9, 0.88, 0.98 ] },
{ student_id: 3, scores: [ 0.9, 0.84, 0.93 ] }
]

Consulta los Tutoriales completos del pipeline de agregación para obtener más información y casos de uso sobre agregación.