Los queries de MongoDB Search se ejecutan dentro de una etapa del pipeline de agregación, que es el método preferido para realizar agregaciones.
Las operaciones de agregación procesan múltiples documentos y devuelven resultados calculados. Puede utilizar operaciones de agregación para:
Agrupa valores de varios documentos.
Realiza operaciones sobre los datos agrupados para devolver un único resultado.
Analiza los cambios en los datos con el tiempo.
Puedes utilizar la etapa $search o $searchMeta como primera etapa del pipeline de agregación.
Etapa de la canalización de agregación | Descripción |
|---|---|
Realiza búsquedas de texto completo y devuelve una lista ordenada de documentos junto con metadatos de búsqueda adicionales. Se puede usar | |
Realiza búsquedas de texto completo y devuelve los metadatos sin obtener los documentos. Se puede utilizar |
Una vez completada la etapa $search o la etapa $searchMeta, se pueden usar etapas de agregación adicionales para procesar más documentos. Por ejemplo, se pueden usar una o más de las siguientes etapas, además de otras etapas:
Etapa de la canalización de agregación | Descripción |
|---|---|
Limita el número de documentos que se pasan a la siguiente etapa en el pipeline. | |
Omite los documentos que pasan a la etapa y pasa los documentos restantes a la siguiente etapa en el pipeline. | |
Pasa los documentos con los campos solicitados a la siguiente etapa en el pipeline. | |
Agrega nuevos campos a los documentos. | |
Procesa múltiples pipelines de agregación dentro de una sola etapa en el mismo conjunto de documentos de entrada. | |
Filtra documentos según un predicado de query específico y pasa los documentos coincidentes a la siguiente etapa del pipeline. | |
Combina documentos con los mismos campos o expresión en un solo documento mediante una clave de grupo. | |
Realiza una unión externa izquierda con una colección en la misma base de datos para filtrar documentos de la colección “unida” para su procesamiento. |
Cuando se agreguen estas etapas al pipeline de agregación, se debe considerar el impacto potencialmente significativo en el rendimiento.
Para mejorar el rendimiento, recomendamos que se utilicen $limit para los resultados de búsqueda, que se paginen según sea necesario y que se recuperen los resultados tras un punto de referencia.