Count Group Items
Dans cette étape, nous allons explorer différentes façons de compter les éléments à l'intérieur de groupes à l'aide du cadre d'agrégation de MongoDB. Le comptage est une opération fondamentale qui vous aide à comprendre la distribution de vos données.
Continuons à travailler avec notre base de données salesdb
:
// Ensure we're in the correct database
use salesdb
Tout d'abord, ajoutons plus de produits pour rendre notre comptage plus intéressant :
db.products.insertMany([
{ category: "Electronics", brand: "Apple" },
{ category: "Electronics", brand: "Samsung" },
{ category: "Clothing", brand: "Nike" },
{ category: "Clothing", brand: "Adidas" },
{ category: "Books", brand: "Penguin" },
{ category: "Books", brand: "Oxford" }
]);
Maintenant, comptons les éléments de différentes manières :
- Comptez le nombre de produits dans chaque catégorie :
db.products.aggregate([
{
$group: {
_id: "$category",
productCount: { $sum: 1 }
}
}
]);
- Comptez les marques uniques dans chaque catégorie :
db.products.aggregate([
{
$group: {
_id: "$category",
uniqueBrands: { $addToSet: "$brand" }
}
}
]);
- Comptez le nombre de marques uniques et le nombre total de produits :
db.products.aggregate([
{
$group: {
_id: "$category",
totalProducts: { $sum: 1 },
uniqueBrands: { $addToSet: "$brand" },
brandCount: { $addToSet: "$brand" }
}
},
{
$project: {
totalProducts: 1,
uniqueBrandCount: { $size: "$uniqueBrands" }
}
}
]);
Exemple de sortie
[
{
_id: 'Electronics',
totalProducts: 4,
uniqueBrandCount: 2
},
{
_id: 'Clothing',
totalProducts: 4,
uniqueBrandCount: 2
},
{
_id: 'Books',
totalProducts: 4,
uniqueBrandCount: 2
}
]
Opérateurs d'agrégation clés expliqués :
$sum: 1
: Compte le nombre total de documents dans chaque groupe
$addToSet
: Crée un tableau de valeurs uniques
$size
: Compte le nombre d'éléments dans un tableau