Make the MongoDB docs better! We value your opinion. Share your feedback for a chance to win $100.
Click here >
Docs Menu
Docs Home
/ /

Etapas de la pipeline de agregación

En esta página, puedes aprender a crear un pipeline de agregación y etapas del pipeline usando métodos en el controlador .NET/C#.

Puedes usar el driver .NET/C# para compilar un pipeline de agregación usando métodos de construcción o documentos BSON. Consulta las siguientes secciones para aprender más sobre cada uno de estos enfoques.

Puedes compilar un pipeline de agregación type-safe de las siguientes maneras:

  • Construir un EmptyPipelineDefinition<TDocument> objeto. Encadena llamadas desde este objeto a los métodos de agregación relevantes. A continuación, pasa el objeto pipeline al método IMongoCollection<TDocument>.Aggregate().

  • Llama al método IMongoCollection<TDocument>.Aggregate(). Encadena las llamadas desde esta llamada de método a los métodos de agregación relevantes.

Selecciona el EmptyPipelineDefinition o la pestaña Aggregate para ver el código correspondiente a cada enfoque:

// Defines the aggregation pipeline
var pipeline = new EmptyPipelineDefinition<Movie>()
.Match(...)
.Group(...)
.Merge(...);
// Executes the aggregation pipeline
var results = collection.Aggregate(pipeline);
// Defines and executes the aggregation pipeline
var results = collection.Aggregate()
.Match(...)
.Group(...)
.Merge(...);

Algunas etapas de agregación no tienen métodos correspondientes en el driver .NET/C#. Para añadir estas etapas a su pipeline, emplee los objetos BsonDocument o literales de string para construir una etapa en la sintaxis de la API de query. A continuación, pasa el documento BSON al método PipelineDefinitionBuilder.AppendStage(). Esta sintaxis admite todas las etapas en el pipeline de agregación, pero no proporciona sugerencias de tipo ni seguridad de tipo.

El siguiente ejemplo de código muestra cómo agregar la etapa $unset a un pipeline de agregación vacío:

var pipeline = new EmptyPipelineDefinition<BsonDocument>()
.AppendStage<BsonDocument, BsonDocument, BsonDocument>("{ $unset: 'field1' }");

Importante

Si utiliza un BsonDocument para definir una etapa de pipeline, el controlador no reconoce ningún atributo BsonClassMap, atributos de serialización ni convenciones de serialización. Los nombres de los campos que utilices en el BsonDocument deben coincidir con los nombres de campo almacenados en el MongoDB Server.

La siguiente tabla enumera los métodos de constructor en el driver .NET/C# que corresponden a las etapas en la pipeline de agregación. Para obtener más información sobre una etapa de agregación y ver un ejemplo de código para el método C# equivalente, sigue el enlace desde el nombre de la etapa a su página de referencia en el manual del servidor de MongoDB.

Si una etapa de agregación no está en la tabla, el driver no proporciona un método builder para ella. En este caso, debe usar el BsonDocument sintaxis para agregar la etapa a tu pipeline.

etapa de agregación
Descripción
Método Builder

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

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.

BucketAuto()

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

ChangeStream()

Divide los grandes eventos de flujo de cambios que exceden los 16 MB en fragmentos más pequeños que se devuelven en un cursor de flujo de cambios.

Se puede usar $changeStreamSplitLargeEvent solo en una pipeline $changeStream, y debe ser la última etapa en la pipeline.

ChangeStreamSplitLargeEvent()

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

Count()

Crea nuevos documentos en una secuencia de documentos donde faltan ciertos valores en un campo.

Densify()

Devuelve documentos literales a partir de expresiones de entrada.

Documents()

Procesa múltiples pipelines 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.

Facet()

Devuelve documentos en orden de más cercanos a más lejanos desde un punto especificado. Este método añade un campo a los documentos de salida que contiene la distancia desde el punto especificado.

GeoNear()

Realiza una búsqueda recursiva en una colección. Este método agrega un nuevo campo de arreglo a cada documento de salida que contiene los resultados de la búsqueda recursiva para ese documento.

GraphLookup()

Agrupa los documentos de entrada mediante una expresión de identificador especificada y aplica las expresiones acumuladoras, si se especifican, 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 de identificador y, si se especifica, los campos acumulados.

Group()

Pasa los primeros n documentos sin modificar a la pipeline, donde n es el límite especificado. Para cada documento de entrada, genera uno o ningún documento (para los primeros n documentos) o ningún documento (después de los primeros n documentos).

Limit()

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.

Lookup()

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

Match()

Escribe 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 una pipeline de actualización personalizada) los resultados en una colección de salida. Para usar esta etapa, debe ser la última etapa en la pipeline.

Merge()

Escribe los documentos resultantes del pipeline de agregación en una colección. Para utilizar esta etapa, debe ser la última fase en el pipeline.

Out()

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

Project()

Utiliza un algoritmo de fusión de rango para combinar los resultados de una query de MongoDB Vector Search y una query de MongoDB Search.

RankFusion()

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.

La etapa $replaceWith es un alias de la etapa $replaceRoot.

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.

La etapa $replaceWith es un alias de la etapa $replaceRoot.

ReplaceWith()

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

Sample()

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

Para obtener más información, consulte MongoDB Search etapas del pipeline de agregación en la documentación de Atlas.

Search()

Devuelve diferentes tipos de documentos de resultados de metadatos para la query de MongoDB Search contra una colección de Atlas.

Para obtener más información, consulte MongoDB Search etapas del pipeline de agregación en la documentación de Atlas.

SearchMeta()

Establece el valor de un campo existente. No puedes usar este método para añadir un nuevo campo de documento.

Set()

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

SetWindowFields()

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

Skip()

Reordena el flujo de documentos mediante una clave de ordenación especificada. Los documentos permanecen sin modificar. Por cada documento de entrada, genera un documento de salida.

Sort()

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.

SortByCount()

Combina los resultados del pipeline de dos colecciones en un único conjunto de resultados.

UnionWith()

Deconstruye un campo de arreglo de los documentos de entrada para generar un documento por cada elemento. Cada documento de salida sustituye el arreglo por un valor de elemento. Para cada documento de entrada, se generan n Documentos, donde n es la cantidad de elementos del arreglo. n puede ser cero para un arreglo vacío.

Unwind()

Realiza una ANN o ENN búsqueda en un vector en el campo especificado de una colección de Atlas.

Para aprender más, MongoDB Vector Search.

VectorSearch()

Para obtener más información sobre cómo ensamblar un pipeline de agregación, consulta Pipeline de agregación en el manual del servidor MongoDB.

Para obtener más información sobre cómo crear etapas de pipeline, consulta Etapas de agregación en el manual de MongoDB Server.

Para obtener más información sobre los métodos y clases utilizados en esta página, consulta la siguiente documentación de la API:

Volver

Agregación

En esta página