Docs Menu
Docs Home
/ /
Operadores

Etapas de la pipeline de agregación

En el Con los métodos db.collection.aggregate()ydb.aggregate(), las etapas de la canalización aparecen en una matriz. En la interfaz de usuario de Atlas, puede organizar las etapas de la canalización mediante el generador de canalizaciones de agregación. Los documentos pasan por las etapas en secuencia.

Puedes usar etapas del pipeline 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.

Todas las etapas, excepto $out, $merge, $geoNear y $changeStream, pueden aparecer varias veces en una pipeline.

Nota

Para obtener detalles sobre un operador específico, incluida la sintaxis y ejemplos, haga clic en el enlace a la página de referencia del operador.

db.collection.aggregate( [ { <stage> }, ... ] )
Etapa
Descripción

Agrega nuevos campos a los documentos. De forma similar a $project, $addFields transforma cada documento en el flujo; específicamente, agregando nuevos campos a los documentos de salida que contienen tanto los campos existentes de los documentos de entrada como los nuevos campos agregados.

$set es un alias para $addFields.

Clasifica los documentos entrantes en grupos, llamados buckets, basados en una expresión especificada y límites de bucket.

Clasifica los documentos entrantes en un número específico de grupos, denominados buckets, según una expresión especificada. Los límites de los buckets se determinan de manera automática con el objetivo de distribuir uniformemente los documentos en el número especificado de buckets.

Devuelve un cursor de flujo de cambios para la colección. Esta etapa solo puede ocurrir una vez en un pipeline de agregación y debe ser la primera etapa.

Devuelve estadísticas sobre una colección o vista.

Devuelve un recuento del número de documentos en esta etapa del pipeline de agregación.

Distinto del acumulador de agregación $count.

Procesa múltiples canalizaciones de agregación dentro de una sola etapa en el mismo conjunto de documentos de entrada. Permite la creación de agregaciones multifacéticas capaces de caracterizar datos a través de múltiples dimensiones, o facetas, en una sola etapa.

Devuelve un flujo ordenado de documentos en función de la proximidad a un punto geoespacial. Incorpora la funcionalidad de $match, $sort y $limit para datos geoespaciales. Los documentos de salida incluyen un campo adicional de distancia y pueden incluir un campo de identificador de ubicación.

Realiza una búsqueda recursiva en una colección. A cada documento de salida, agrega un nuevo campo de arreglo que contenga los resultados del recorrido de la búsqueda recursiva para ese documento.

Agrupa los documentos de entrada mediante una expresión de identificador específica y aplica la expresión del acumulador, si se especifica, a cada grupo. Consume todos los documentos de entrada y produce un documento por cada grupo distinto. Los documentos de salida solo contienen el campo identificador y, si se especifica, los campos acumulados.

Devuelve estadísticas sobre el uso de cada índice de la colección.

Pasa los primeros n documentos sin modificar al pipeline donde n es el límite especificado. Para cada documento de entrada, se genera un documento (para los primeros n documentos) o cero documentos (después de los primeros n documentos).

Enumera todas las sesiones que han estado activas el tiempo suficiente para propagarse a la colección system.sessions.

Realiza un left outer join a otra colección en la misma base de datos para filtrar documentos de la colección "unida" para su procesamiento.

Filtra el flujo de documentos para permitir que solo los documentos coincidentes pasen sin modificaciones a la siguiente etapa del pipeline. $match utiliza consultas estándar de MongoDB. Para cada documento de entrada, se genera un documento (si hay coincidencia) o cero documentos (si no hay coincidencia).

Guarda los documentos resultantes del pipeline de agregación en una colección. La etapa puede incorporar (insertar nuevos documentos, fusionar documentos, reemplazar documentos, conservar documentos existentes, fallar la operación, procesar documentos con un pipeline de actualización personalizado) los resultados en una colección de salida. Para usar la etapa $merge, debe ser la última etapa del pipeline.

Guarda los documentos resultantes del pipeline de agregación en una colección. Para usar la etapa $out, debe ser la última etapa del pipeline.

Devuelve información de la caché de planes para una colección.

Reestructura cada documento del flujo, por ejemplo, agregando nuevos campos o removiendo los existentes. Para cada documento de entrada, genera un documento.

Consulta también $unset para remover campos existentes.

Reconfigura cada documento en la secuencia restringiendo el contenido de cada documento según la información almacenada en los propios documentos. Incorpora la funcionalidad de $project y $match. Se puede utilizar para implementar la restricción a nivel de campo. Para cada documento de entrada, genera uno o cero documentos.

Reemplaza un documento con el documento incrustado específico. La operación reemplaza todos los campos existentes en el documento de entrada, incluido el campo _id. Especifique un documento incrustado en el documento de entrada para elevar el documento incrustado al nivel superior.

$replaceWith es un alias para la etapa $replaceRoot.

Reemplaza un documento con el documento incrustado específico. La operación reemplaza todos los campos existentes en el documento de entrada, incluido el campo _id. Especifique un documento incrustado en el documento de entrada para elevar el documento incrustado al nivel superior.

$replaceWith es un alias para la etapa $replaceRoot.

Selecciona aleatoriamente el número específico de documentos de su entrada.

Realiza una búsqueda de texto completo de los campos en una colección de Atlas.

$search solo está disponible para clústeres MongoDB Atlas y no está disponible para implementaciones autoadministradas.

Agrega nuevos campos a los documentos. De forma similar a $project, $set transforma cada documento en el flujo; específicamente, agregando nuevos campos a los documentos de salida que contienen tanto los campos existentes de los documentos de entrada como los nuevos campos agregados.

$set es un alias para la etapa $addFields.

Agrupa documentos en ventanas y aplica uno o más operadores a los documentos en cada ventana.

Nuevo en la versión 5.0.

Omite los primeros documentos n, donde n es el número de omisión especificado, y pasa los documentos restantes sin modificar al pipeline. Para cada documento de entrada, se genera cero documentos (para los primeros documentos n) o un documento (después de los primeros documentos n).

Reordena el flujo de documentos por una clave de ordenación específica. Solo cambia el orden; los documentos permanecen sin modificar. Para cada documento de entrada, genera un documento.

Agrupa los documentos entrantes según el valor de una expresión especificada y luego calcula el número de documentos en cada grupo distinto.

Realiza una unión de dos colecciones, es decir, combina los resultados de la canalización de dos colecciones en un único conjunto de resultados.

Remueve/excluye campos de los documentos.

$unset es un alias para la etapa $project que elimina campos.

Descompone un campo de arreglo de los documentos de entrada para producir un documento por cada elemento. Cada documento de salida reemplaza el arreglo con un valor de elemento. Para cada documento de entrada, genera documentos n, donde n es el número de elementos del arreglo y puede ser cero para un arreglo vacío.

Para conocer los operadores de expresión de agregación que se utilizarán en las etapas de la canalización, consulte Operadores de canalización de agregación.

A partir de la 3.6 versión, MongoDB también proporciona el db.aggregate() método:

db.aggregate( [ { <stage> }, ... ] )

Las siguientes etapas utilizan el método db.aggregate() y no el método db.collection.aggregate().

Etapa
Descripción

Devuelve un cursor de flujo de cambios para la colección. Esta etapa solo puede ocurrir una vez en un pipeline de agregación y debe ser la primera etapa.

Devuelve información sobre las operaciones activas y/o inactivas de la implementación de MongoDB.

Enumera todas las sesiones activas utilizadas recientemente en la instancia actualmente conectada de mongos o mongod. Es posible que estas sesiones aún no se hayan propagado a la colección system.sessions.

Puedes utilizar el pipeline de agregación para actualizaciones en:

Para las actualizaciones, el pipeline puede constar de las siguientes etapas:

Nombre
Descripción

Añade nuevos campos a los documentos. Genera documentos que contienen todos los campos existentes en los documentos de entrada y los campos recién añadidos.

Clasifica los documentos entrantes en grupos, llamados buckets, basados en una expresión especificada y límites de bucket.

Clasifica los documentos entrantes en un número específico de grupos, denominados buckets, según una expresión especificada. Los límites de los buckets se determinan de manera automática con el objetivo de distribuir uniformemente los documentos en el número especificado de buckets.

Devuelve un cursor de flujo de cambios para la colección o base de datos. Esta etapa solo puede ocurrir una vez en una canalización de agregación y debe ser la primera.

Devuelve estadísticas sobre una colección o vista.

Devuelve un recuento del número de documentos en esta etapa del pipeline de agregación.

Distinto del acumulador de agregación $count.

Devuelve información sobre operaciones activas o inactivas en la implementación de MongoDB. Para ejecutarlo, utilice el db.aggregate() método.

Procesa múltiples canalizaciones de agregación dentro de una sola etapa en el mismo conjunto de documentos de entrada. Permite la creación de agregaciones multifacéticas capaces de caracterizar datos a través de múltiples dimensiones, o facetas, en una sola etapa.

Devuelve un flujo ordenado de documentos en función de la proximidad a un punto geoespacial. Incorpora la funcionalidad de $match, $sort y $limit para datos geoespaciales. Los documentos de salida incluyen un campo adicional de distancia y pueden incluir un campo de identificador de ubicación.

Realiza una búsqueda recursiva en una colección. A cada documento de salida, agrega un nuevo campo de arreglo que contenga los resultados del recorrido de la búsqueda recursiva para ese documento.

Agrupa los documentos de entrada mediante una expresión de identificador específica y aplica la expresión del acumulador, si se especifica, a cada grupo. Consume todos los documentos de entrada y produce un documento por cada grupo distinto. Los documentos de salida solo contienen el campo identificador y, si se especifica, los campos acumulados.

Devuelve estadísticas sobre el uso de cada índice de la colección.

Pasa los primeros n documentos sin modificar al pipeline donde n es el límite especificado. Para cada documento de entrada, se genera un documento (para los primeros n documentos) o cero documentos (después de los primeros n documentos).

Enumera todas las sesiones activas utilizadas recientemente en la instancia actualmente conectada de mongos o mongod. Es posible que estas sesiones aún no se hayan propagado a la colección system.sessions.

Enumera todas las sesiones que han estado activas el tiempo suficiente para propagarse a la colección system.sessions.

Realiza un left outer join a otra colección en la misma base de datos para filtrar documentos de la colección "unida" para su procesamiento.

Filtra el flujo de documentos para permitir que solo los documentos coincidentes pasen sin modificaciones a la siguiente etapa del pipeline. $match utiliza consultas estándar de MongoDB. Para cada documento de entrada, se genera un documento (si hay coincidencia) o cero documentos (si no hay coincidencia).

Guarda los documentos resultantes del pipeline de agregación en una colección. La etapa puede incorporar (insertar nuevos documentos, fusionar documentos, reemplazar documentos, conservar documentos existentes, fallar la operación, procesar documentos con un pipeline de actualización personalizado) los resultados en una colección de salida. Para usar la etapa $merge, debe ser la última etapa del pipeline.

Nuevo en la versión 4.2.

Guarda los documentos resultantes del pipeline de agregación en una colección. Para usar la etapa $out, debe ser la última etapa del pipeline.

Devuelve información de la caché de planes para una colección.

Reestructura cada documento del flujo, por ejemplo, agregando nuevos campos o removiendo los existentes. Para cada documento de entrada, genera un documento.

Reconfigura cada documento en la secuencia restringiendo el contenido de cada documento según la información almacenada en los propios documentos. Incorpora la funcionalidad de $project y $match. Se puede utilizar para implementar la restricción a nivel de campo. Para cada documento de entrada, genera uno o cero documentos.

Reemplaza un documento con el documento incrustado específico. La operación reemplaza todos los campos existentes en el documento de entrada, incluido el campo _id. Especifique un documento incrustado en el documento de entrada para elevar el documento incrustado al nivel superior.

Reemplaza un documento con el documento incrustado específico. La operación reemplaza todos los campos existentes en el documento de entrada, incluido el campo _id. Especifique un documento incrustado en el documento de entrada para elevar el documento incrustado al nivel superior.

Alias $replaceRoot ​​para.

Selecciona aleatoriamente el número específico de documentos de su entrada.

Realiza una búsqueda de texto completo de los campos en una colección de Atlas.

Nota

$search solo está disponible para clústeres MongoDB Atlas y no está disponible para implementaciones autoadministradas.

Añade nuevos campos a los documentos. Genera documentos que contienen todos los campos existentes en los documentos de entrada y los campos recién añadidos.

Alias $addFields ​​para.

Agrupa documentos en ventanas y aplica uno o más operadores a los documentos en cada ventana.

Nuevo en la versión 5.0.

Omite los primeros documentos n, donde n es el número de omisión especificado, y pasa los documentos restantes sin modificar al pipeline. Para cada documento de entrada, se genera cero documentos (para los primeros documentos n) o un documento (después de los primeros documentos n).

Reordena el flujo de documentos por una clave de ordenación específica. Solo cambia el orden; los documentos permanecen sin modificar. Para cada documento de entrada, genera un documento.

Agrupa los documentos entrantes según el valor de una expresión especificada y luego calcula el número de documentos en cada grupo distinto.

Realiza una unión de dos colecciones, es decir, combina los resultados de la canalización de dos colecciones en un único conjunto de resultados.

Nuevo en la versión 4.4.

Elimina/excluye campos de los documentos.

Alias ​​para la etapa que excluye/elimina $project campos.

Descompone un campo de arreglo de los documentos de entrada para producir un documento por cada elemento. Cada documento de salida reemplaza el arreglo con un valor de elemento. Para cada documento de entrada, genera documentos n, donde n es el número de elementos del arreglo y puede ser cero para un arreglo vacío.

Volver

$bit

En esta página