$floor

Der $floor Operator gibt die größte ganze Zahl zurück, die kleiner oder gleich der angegebenen Zahl ist.

Syntax

{
  $floor: <number>
}

Die Parameter

Parameter Description
<number> Ein beliebiger gültiger Ausdruck, der in eine Zahl aufgelöst wird.

Examples

Betrachten Sie dieses Beispieldokument aus der Stores-Sammlung.

{
    "_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
                }
            ]
        }
    ]
}

Beispiel 1: Berechnung des Bodens des Gesamtumsatzes und der Rabatte

Um die Untergrenze des durchschnittlichen Umsatzvolumens für ein bestimmtes Geschäft und die Untergrenze des Umsatzes pro Kategorie zu berechnen, führen Sie eine Abfrage mit dem $floor-Operator aus, um die gewünschten Ergebnisse zurückzugeben.

db.stores.aggregate([{
        $match: {
            _id: "40d6f4d7-50cd-4929-9a07-0a7a133c2e74"
        }
    },
    {
        $project: {
            name: 1,
            averageSalesFloor: {
                $floor: {
                    $divide: [
                        "$sales.totalSales",
                        {
                            $size: "$sales.salesByCategory"
                        }
                    ]
                }
            },
            categoriesWithFloorSales: {
                $map: {
                    input: "$sales.salesByCategory",
                    as: "category",
                    in: {
                        categoryName: "$$category.categoryName",
                        floorSales: {
                            $floor: "$$category.totalSales"
                        }
                    }
                }
            }
        }
    }
])

Diese Abfrage gibt das folgende Ergebnis zurück:

[
  {
    "_id": "40d6f4d7-50cd-4929-9a07-0a7a133c2e74",
    "name": "Proseware, Inc. | Home Entertainment Hub - East Linwoodbury",
    "averageSalesFloor": 30372,
    "categoriesWithFloorSales": [
      {
        "categoryName": "Sound Bars",
        "floorSales": 2120
      },
      {
        "categoryName": "Home Theater Projectors",
        "floorSales": 45004
      },
      {
        "categoryName": "Game Controllers",
        "floorSales": 43522
      },
      {
        "categoryName": "Remote Controls",
        "floorSales": 28946
      },
      {
        "categoryName": "VR Games",
        "floorSales": 32272
      }
    ]
  }
]