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.
L’opérateur $integral calcule la zone sous une courbe en fonction de la plage spécifiée de documents triés en fonction d’un champ spécifique.
Syntaxe
{
$integral: {
input: < expression > ,
unit: < time window >
}
}
Paramètres
| Paramètre | Descriptif |
|---|---|
input |
Champ dans les documents pour l’intégrale |
unit |
Unité de temps spécifiée pour l’intégrale |
Examples
Considérez cet exemple de document de la collection des magasins.
{
"_id": "0fcc0bf0-ed18-4ab8-b558-9848e18058f4",
"name": "First Up Consultants | Beverage Shop - Satterfieldmouth",
"location": {
"lat": -89.2384,
"lon": -46.4012
},
"staff": {
"totalStaff": {
"fullTime": 8,
"partTime": 20
}
},
"sales": {
"totalSales": 75670,
"salesByCategory": [
{
"categoryName": "Wine Accessories",
"totalSales": 34440
},
{
"categoryName": "Bitters",
"totalSales": 39496
},
{
"categoryName": "Rum",
"totalSales": 1734
}
]
},
"promotionEvents": [
{
"eventName": "Unbeatable Bargain Bash",
"promotionalDates": {
"startDate": {
"Year": 2024,
"Month": 6,
"Day": 23
},
"endDate": {
"Year": 2024,
"Month": 7,
"Day": 2
}
},
"discounts": [
{
"categoryName": "Whiskey",
"discountPercentage": 7
},
{
"categoryName": "Bitters",
"discountPercentage": 15
},
{
"categoryName": "Brandy",
"discountPercentage": 8
},
{
"categoryName": "Sports Drinks",
"discountPercentage": 22
},
{
"categoryName": "Vodka",
"discountPercentage": 19
}
]
},
{
"eventName": "Steal of a Deal Days",
"promotionalDates": {
"startDate": {
"Year": 2024,
"Month": 9,
"Day": 21
},
"endDate": {
"Year": 2024,
"Month": 9,
"Day": 29
}
},
"discounts": [
{
"categoryName": "Organic Wine",
"discountPercentage": 19
},
{
"categoryName": "White Wine",
"discountPercentage": 20
},
{
"categoryName": "Sparkling Wine",
"discountPercentage": 19
},
{
"categoryName": "Whiskey",
"discountPercentage": 17
},
{
"categoryName": "Vodka",
"discountPercentage": 23
}
]
}
]
}
Exemple 1 : calculer l’intégrale des ventes totales
Pour calculer l’intégralité des ventes totales dans tous les magasins sous la société First Up Consultants, exécutez d’abord une requête pour filtrer le nom de la société. Ensuite, triez les magasins résultants dans l’ordre croissant de leurs dates d’ouverture. Enfin, calculez le total des ventes totales du premier au document en cours dans le jeu de résultats trié.
db.stores.aggregate(
[{
"$match": {
"company": {
"$in": [
"First Up Consultants"
]
}
}
},
{
"$setWindowFields": {
"partitionBy": "$company",
"sortBy": {
"storeOpeningDate": 1
},
"output": {
"salesIntegral": {
"$integral": {
"input": "$sales.revenue",
"unit": "hour"
},
"window": {
"range": [
"unbounded",
"current"
],
"unit": "hour"
}
}
}
}
},
{
"$project": {
"company": 1,
"name": 1,
"sales.revenue": 1,
"storeOpeningDate": 1,
"salesIntegral": 1
}
}])
Les deux premiers résultats retournés par cette requête sont les suivants :
[
{
"_id": "2cf3f885-9962-4b67-a172-aa9039e9ae2f",
"sales": {
"revenue": 37701
},
"company": "First Up Consultants",
"storeOpeningDate": "2021-10-03T00:00:00.000Z",
"name": "First Up Consultants | Bed and Bath Center - South Amir",
"salesIntegral": 0
},
{
"_id": "8e7a259b-f7d6-4ec5-a521-3bed53adc587",
"name": "First Up Consultants | Drone Stop - Lake Joana",
"sales": {
"revenue": 14329
},
"company": "First Up Consultants",
"storeOpeningDate": "2024-09-02T00:05:39.311Z",
"salesIntegral": 664945851.9932402
}
]