Join us at MongoDB.local London on 7 May to unlock new possibilities for your data. Use WEB50 to save 50%.
Register now >
Docs Menu
Docs Home
/ /

Operaciones de agregación

En esta guía, puede aprender a utilizar el controlador Kotlin Sync para realizar operaciones de agregación.

Puede usar operaciones de agregación para procesar datos en sus colecciones de MongoDB y devolver resultados calculados. El marco de agregación de MongoDB, que forma parte de la API de query, está basado en el concepto de una pipeline de procesamiento de datos. Los documentos ingresan en una pipeline que contiene una o más etapas, y cada etapa transforma los documentos para producir un resultado final agregado.

Puedes pensar en una operación de agregación como similar a una fábrica de automóviles. Una fábrica de automóviles tiene una línea de ensamblaje, que contiene estaciones de ensamblaje con herramientas especializadas para realizar tareas específicas, como taladros y soldadores. Las piezas en bruto ingresan a la fábrica y luego la línea de montaje las transforma y ensambla en un producto terminado.

La tubería de agregación es la línea de ensamblaje, las etapas de agregación son las estaciones de ensamblaje y las expresiones del operador son las herramientas especializadas.

Se pueden utilizar las operaciones de búsqueda para realizar las siguientes acciones:

  • Seleccione qué documentos devolver

  • Seleccione qué campos devolver

  • Ordenar los resultados

Puedes utilizar operaciones de agregación para realizar las siguientes acciones:

  • Realizar operaciones de búsqueda

  • Cambiar el nombre de los campos

  • Calcular campos

  • Resumir datos

  • Valores del grupo

Las siguientes limitaciones se aplican al utilizar operaciones de agregación:

  • Los documentos devueltos no deben violar la Límite de tamaño de documento BSON de 16 megabytes.

  • Las etapas del pipeline tienen un límite de memoria de 100 megabytes por defecto. Puede superar este límite utilizando el allowDiskUse() método de la clase AggregateIterable.

Importante

Excepción $graphLookup

La etapa $graphLookup tiene un límite de memoria estricto de 100 megabytes e ignora la allowDiskUse opción.

Los ejemplos de esta sección utilizan la colección restaurants en la base de datos sample_restaurants de los conjuntos de datos de muestra de Atlas. Para aprender cómo crear una implementación gratuita de MongoDB y cargar los conjuntos de datos de muestra, consulta la guía de MongoDB Comenzar.

La siguiente clase de datos de Kotlin modela los documentos de esta colección:

data class Restaurant(
val name: String,
val cuisine: String,
val borough: String
)

Para realizar una agregación en los documentos de una colección, pase una lista de etapas de agregación al método aggregate().

Este ejemplo genera un recuento del número de panaderías en cada distrito de la ciudad de Nueva York. El siguiente código crea una canalización de agregación que contiene las siguientes etapas:

  • Una $match etapa para filtrar los documentos en los que el valor del campo cuisine es "Bakery".

  • Una etapa $group para agrupar los documentos coincidentes por el campo borough, produciendo un recuento de documentos para cada valor distinto de ese campo.

Nota

El siguiente ejemplo utiliza el patrón de desarrolladores para implementar las etapas de un pipeline de agregación. Para obtener más información sobre cómo utilizar el patrón de desarrolladores, consulte Utilice desarrolladores con Clases de datos

val pipeline = listOf(
Aggregates.match(Filters.eq(Restaurant::cuisine.name, "Bakery")),
Aggregates.group("\$borough", Accumulators.sum("count", 1))
)
val results = collection.aggregate<Document>(pipeline)
results.forEach { result ->
println(result)
}
Document{{_id=Bronx, count=71}}
Document{{_id=Manhattan, count=221}}
Document{{_id=Brooklyn, count=173}}
Document{{_id=Queens, count=204}}
Document{{_id=Staten Island, count=20}}
Document{{_id=Missing, count=2}}

Tip

Cuando especifiques una clave de grupo para la etapa de agregación $group, asegúrate de escapar cualquier carácter $ utilizando el carácter \.

Para ver información sobre cómo MongoDB ejecuta tu operación, puedes incluir la etapa de agregación $explain en el pipeline. Cuando MongoDB explica una operación, devuelve planes de ejecución y estadísticas de rendimiento. Un plan de ejecución es una forma potencial en la que MongoDB puede completar una operación. Cuando le indicas a MongoDB que explique una operación, devuelve tanto el plan que MongoDB seleccionó para la operación, como cualquier plan de ejecución rechazado.

El siguiente ejemplo de código ejecuta la misma agregación mostrada en la sección anterior y añade la etapa $explain para mostrar los detalles de la operación:

print(collection.aggregate(pipeline).explain())
{
"explainVersion": "2",
"queryPlanner": {
"namespace": "sample_restaurants.restaurants"
"indexFilterSet": false,
"parsedQuery": {
"cuisine": {"$eq": "Bakery"}
},
"queryHash": "865F14C3",
"planCacheKey": "0697561B",
"optimizedPipeline": true,
"maxIndexedOrSolutionsReached": false,
"maxIndexedAndSolutionsReached": false,
"maxScansToExplodeReached": false,
"winningPlan": { ... }
...
}
...
}

Puede realizar una consulta de búsqueda de MongoDB creando y ejecutando una canalización de agregación que contenga una de las siguientes etapas de canalización:

  • $search

  • $searchMeta

Para obtener más información sobre las etapas de la canalización de búsqueda de MongoDB,consulte Elegir la etapa de la canalización de agregación en la documentación de Atlas. Para ver ejemplos que utilizan el controlador de sincronización de Kotlin para crear etapas de búsqueda de la canalización de búsqueda de MongoDB, consulte la guía "Ejecutar una consulta de búsqueda de MongoDB".

Para obtener una lista completa de las etapas de agregación, consulta Etapas de agregación en el manual de MongoDB Server.

Para obtener más información sobre cómo ensamblar una canalización de agregación y ver ejemplos, consulte Canalización de agregación en el manual de MongoDB Server.

Para aprender más sobre cómo explicar las operaciones de MongoDB, consulta Salida de explicación y Planes de consultas en el manual de MongoDB Server.

Para obtener más información sobre cómo ejecutar operaciones de agregación con el controlador Kotlin Sync, consulte la siguiente documentación de API:

Volver

Configurar las operaciones CRUD

En esta página