Remarque
L’accès à cette page nécessite une autorisation. Vous pouvez essayer de vous connecter ou de modifier des répertoires.
L’accès à cette page nécessite une autorisation. Vous pouvez essayer de modifier des répertoires.
La aggregate commande est utilisée pour traiter les enregistrements de données et retourner des résultats calculés. Il effectue des opérations sur les données, telles que le filtrage, le regroupement et le tri, et peut transformer les données de différentes manières. La aggregate commande est très polyvalente et est couramment utilisée pour l’analyse et la création de rapports de données.
Syntaxe
db.collection.aggregate(pipeline, options)
- pipeline : tableau d’étapes d’agrégation qui traitent et transforment les données.
-
options : facultatif. Spécifie d’autres options pour l’agrégation, telles que
explain,allowDiskUseetcursor.
Examples
Exemple 1 : Calculer le total des ventes par catégorie
Cet exemple montre comment calculer le total des ventes pour chaque catégorie de la stores collection.
db.stores.aggregate([
{
$unwind: "$sales.salesByCategory"
},
{
$group: {
_id: "$sales.salesByCategory.categoryName",
totalSales: { $sum: "$sales.salesByCategory.totalSales" }
}
}
])
Exemple de sortie
[mongos] StoreData> db.stores.aggregate([
... {
... $unwind: "$sales.salesByCategory"
... },
... {
... $group: {
... _id: "$sales.salesByCategory.categoryName",
... totalSales: { $sum: "$sales.salesByCategory.totalSales" }
... }
... }
... ])
[
{ _id: 'Christmas Trees', totalSales: 3147281 },
{ _id: 'Nuts', totalSales: 3002332 },
{ _id: 'Camping Tables', totalSales: 4431667 }
]
Exemple 2 : Rechercher des magasins avec un personnel à temps plein supérieur à 10
Cet exemple montre comment filtrer les magasins où le nombre d’employés à temps plein est supérieur à 10.
db.stores.aggregate([
{
$match: {
"staff.totalStaff.fullTime": { $gt: 10 }
}
}
])
Exemple de sortie
[mongos] StoreData> db.stores.aggregate([
... {
... $match: {
... "staff.totalStaff.fullTime": { $gt: 10 }
... }
... }
... ])
[
{
_id: '7954bd5c-9ac2-4c10-bb7a-2b79bd0963c5',
name: "Lenore's DJ Equipment Store",
location: { lat: -9.9399, lon: -0.334 },
staff: { totalStaff: { fullTime: 18, partTime: 7 } },
sales: {
totalSales: 35911,
salesByCategory: [ { categoryName: 'DJ Headphones', totalSales: 35911 } ]
},
promotionEvents: [
{
discounts: [
{ categoryName: 'DJ Turntables', discountPercentage: 18 },
{ categoryName: 'DJ Mixers', discountPercentage: 15 }
]
}
],
tag: [ '#SeasonalSale', '#FreeShipping', '#MembershipDeals' ]
}
]
Exemple 3 : Répertorier tous les événements de promotion avec des remises supérieures à 15%
Cet exemple répertorie tous les événements de promotion dont la remise est supérieure à 15%.
db.stores.aggregate([
{
$unwind: "$promotionEvents"
},
{
$unwind: "$promotionEvents.discounts"
},
{
$match: {
"promotionEvents.discounts.discountPercentage": { $gt: 15 }
}
},
{
$group: {
_id: "$promotionEvents.eventName",
discounts: { $push: "$promotionEvents.discounts" }
}
}
])
Exemple de sortie
[mongos] StoreData> db.stores.aggregate([
... {
... $unwind: "$promotionEvents"
... },
... {
... $unwind: "$promotionEvents.discounts"
... },
... {
... $match: {
... "promotionEvents.discounts.discountPercentage": { $gt: 20 }
... }
... },
... {
... $group: {
... _id: "$promotionEvents.eventName",
... discounts: { $push: "$promotionEvents.discounts" }
... }
... }
... ])
[
{
[
{ categoryName: 'Basketball Gear', discountPercentage: 23 },
{ categoryName: 'Wool Carpets', discountPercentage: 22 },
{
categoryName: 'Portable Bluetooth Speakers',
discountPercentage: 24
}
]
}
]
Contenu connexe
- Passer en revue les options de migration de MongoDB vers Azure DocumentDB
- En savoir plus sur la compatibilité des fonctionnalités avec MongoDB