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 gestionado 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.

  • No puedes usar$where en una etapa $match.

  • No puede usar $near ni $nearSphere en una etapa $match. Como alternativa, puede elegir entre:

  • Para usar $text en una etapa $match, la etapa $match debe ser la primera etapa de la pipeline.

    Las vistas no son compatibles con $text.

    Nota

    $text proporciona capacidades de query de texto para implementaciones autogestionadas (no pertenecientes a Atlas). Para los datos alojados en MongoDB Atlas, MongoDB ofrece una solución mejorada de búsqueda de texto completo, Búsqueda de Atlas.

Para los datos almacenados en MongoDB Atlas, se puede utilizar la opción filter de Atlas Search del operador compuesto para hacer coincidir o aplicar un filtro a documentos al ejecutar los query $search. Ejecutar $match después de $search es menos eficiente que 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 coincidencia exacta 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 documentos para procesar utilizando el operador de pipeline $match y luego canaliza los resultados al operador de pipeline $group para calcular un conteo de los documentos:

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

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

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.