Contar elementos de grupo
En este paso, exploraremos diferentes maneras de contar elementos dentro de grupos utilizando el marco de agregación de MongoDB. Contar es una operación fundamental que te ayuda a entender la distribución de tus datos.
Continuemos trabajando con nuestra base de datos salesdb
:
// Asegurémonos de estar en la base de datos correcta
use salesdb
Primero, agreguemos más productos para que nuestro conteo sea más interesante:
db.products.insertMany([
{ categoría: "Electrónica", marca: "Apple" },
{ categoría: "Electrónica", marca: "Samsung" },
{ categoría: "Ropa", marca: "Nike" },
{ categoría: "Ropa", marca: "Adidas" },
{ categoría: "Libros", marca: "Penguin" },
{ categoría: "Libros", marca: "Oxford" }
]);
Ahora, contemos elementos de diferentes maneras:
- Contar el número de productos en cada categoría:
db.products.aggregate([
{
$group: {
_id: "$categoría",
conteoProductos: { $sum: 1 }
}
}
]);
- Contar marcas únicas dentro de cada categoría:
db.products.aggregate([
{
$group: {
_id: "$categoría",
marcasUnicas: { $addToSet: "$marca" }
}
}
]);
- Contar el número de marcas únicas y el total de productos:
db.products.aggregate([
{
$group: {
_id: "$categoría",
totalProductos: { $sum: 1 },
marcasUnicas: { $addToSet: "$marca" },
conteoMarcas: { $addToSet: "$marca" }
}
},
{
$project: {
totalProductos: 1,
conteoMarcasUnicas: { $size: "$marcasUnicas" }
}
}
]);
Salida de ejemplo
[
{
_id: 'Electrónica',
totalProductos: 4,
conteoMarcasUnicas: 2
},
{
_id: 'Ropa',
totalProductos: 4,
conteoMarcasUnicas: 2
},
{
_id: 'Libros',
totalProductos: 4,
conteoMarcasUnicas: 2
}
]
Operadores de agregación principales explicados:
$sum: 1
: Cuenta el número total de documentos en cada grupo
$addToSet
: Crea una matriz de valores únicos
$size
: Cuenta el número de elementos en una matriz