Introducción
MongoDB Aggregation Framework: Filtrado y Análisis de Datos
Uso de MongoDB Aggregation Framework y Query Language
Configuración de MongoDB Atlas y Docker para Desarrollo Local
Configuración de Servidor Local con Docker y MongoDB
Operaciones básicas
Agregaciones en MongoDB: Filtrar y Ordenar Propiedades en Compass
Uso del Operador Group en MongoDB Aggregation Framework
Uso del Operador Project en MongoDB para Formatear Resultados
Operadores Count y Average en MongoDB Aggregation Framework
Uso de operadores set y project en MongoDB para formateo de datos
Etapas de Aggregation Framework
Desenredado de Arrays con Unwind en MongoDB Aggregation
Almacenamiento de Consultas en MongoDB con el Operador Out
Coordenadas Georreferenciadas y MongoDB: Manejo con Aggregation Framework
Análisis de Precios de Propiedades por Proximidad Geográfica
Uniones en MongoDB con el Operador Lookup para Análisis de Datos
Operaciones avanzadas
Creación de Funciones Personalizadas en MongoDB con JavaScript
Uso del operador Redux para filtrar documentos en MongoDB
Uso del Operador Accumulator en MongoDB para Análisis de Datos
Agrupación de Datos con MongoDB: Uso de Bucket y Bucket Auto
Performance y optimización
Optimización de Consultas en MongoDB usando Aggregation Framework
Análisis de Performance en Pipelines de MongoDB
Próximos pasos
Uso de MongoDB Aggregation Framework para Consultas Complejas
No tienes acceso a esta clase
¡Continúa aprendiendo! Únete y comienza a potenciar tu carrera
El MongoDB Aggregation Framework es un conjunto de herramientas poderosas que permite manipular y transformar documentos en una base de datos MongoDB mediante operadores diversos. Hasta ahora, hemos explorado muchos operadores que cumplen diferentes requisitos en la construcción de pipelines de datos. Sin embargo, hay situaciones en las que necesitamos ir más allá, especialmente cuando la lógica es compleja y no está cubierta por los operadores disponibles.
Para superar las limitaciones de los operadores disponibles, MongoDB permite la inclusión de funciones personalizadas escritas en JavaScript. Esto es particularmente útil para satisfacer requerimientos específicos. Integrar funciones en nuestros scripts de MongoDB no es complejo y nos da la flexibilidad para crear contenido nuevo o elementos adicionales basados en los resultados de nuestra función personalizada.
A partir de este punto, se recomienda usar Visual Studio Code en lugar de MongoDB Compass para realizar tareas de MongoDB, dado que ofrece más flexibilidad. Aquí van algunos pasos:
Supongamos que queremos contar las palabras en las descripciones de propiedades de Airbnb, agrupadas por tipo de propiedad. La lógica detrás de esta operación puede ejecutarse mediante un script JavaScript:
db.collection.aggregate([
{
$addFields: {
wordCount: {
$function: {
body: function(description) {
if (description) {
return description.split(' ').length;
} else {
return 0;
}
},
args: ["$description"],
lang: "js"
}
}
}
},
{
$group: {
_id: "$propertyType",
averageWordCount: { $avg: "$wordCount" }
}
}
]);
Aunque poder usar JavaScript dentro de MongoDB puede resultar emocionante y ofrece un gran poder a quienes ya están familiarizados con dicho lenguaje, es importante tener precaución. Las funciones JavaScript en MongoDB pueden ser costosas en términos de rendimiento y propensas a errores. Por lo tanto, es crucial que estas funciones sean utilizadas solo en casos específicos donde no hay operadores estándar de MongoDB que puedan resolver el problema. La mayoría de las necesidades de agregación pueden ser satisfechas con los operadores ya existentes en MongoDB.
Con estas recomendaciones y conocimientos, puedes seguir adelante y descubrir más sobre cómo MongoDB puede ayudarte a transformar y presentar los datos de manera efectiva.
Aportes 5
Preguntas 0
El ejemplo lo ejecute localmente en mongoDB. Para eso tuve que crear una base de datos e importar todas las colecciones de mongoDb atlas.
var db=db.getSiblingDB("sample_airbnb")
var resultado=db.listingsAndReviews.aggregate(
{
$addFields:{
wordCount:{
$function:{
body: function(description){
if(description){
var words = description.split('');
return words.length;
} else{
return 0
}
},
args:["$description"],
lang:"js"
}
}
}
},
{
$group:{
_id:"$property_type",
averageWordCount:{ $avg: "$wordCount"}
}
},
{
$count: "cantidad",
}
)
print(resultado)
#Resultado
[ { cantidad: 36 } ]
use('sample_airbnb')
db.listingsAndReviews.aggregate([
{
$addFields:{
wordCount: {
$function:{
body:function(descripcion){
if(descripcion){
const words = descripcion.split(' ')
return words.length
}else{
return 0
}
},
args: ["$description"],
lang: "js"
}
}
}
},
{
$group: {
_id: "$propery_type",
averageWordCount: {$avg: "$wordCount"}
}
}
])
¿Quieres ver más aportes, preguntas y respuestas de la comunidad?