$ln

Operatorn $ln beräknar den naturliga logaritmen (bas e) för indatanumret.

Syntax

{
  $ln: <number>
}

Parameterar

Parameter Description
<number> Ett giltigt uttryck som matchar ett positivt tal.

Examples

Överväg det här exempeldokumentet från butiksamlingen.

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

Exempel 1 – Beräkna den naturliga logaritmen för den totala försäljningen efter kategori

Om du vill beräkna den naturliga logaritmen för försäljningsvolymen efter kategori för att analysera tillväxttakten kör du en fråga med hjälp av $ln-operatorn i fältet totalFörsäljning för att returnera önskat resultat.

db.stores.aggregate([{
        $match: {
            _id: "40d6f4d7-50cd-4929-9a07-0a7a133c2e74"
        }
    },
    {
        $project: {
            name: 1,
            salesGrowthMetrics: {
                $map: {
                    input: "$sales.salesByCategory",
                    as: "category",
                    in: {
                        categoryName: "$$category.categoryName",
                        salesValue: "$$category.totalSales",
                        naturalLog: {
                            $ln: "$$category.totalSales"
                        }
                    }
                }
            }
        }
    }
])

Den här frågan returnerar följande resultat:

[
  {
    "_id": "40d6f4d7-50cd-4929-9a07-0a7a133c2e74",
    "name": "Proseware, Inc. | Home Entertainment Hub - East Linwoodbury",
    "salesGrowthMetrics": [
      {
        "categoryName": "Sound Bars",
        "salesValue": 2120,
        "naturalLog": 7.659
      },
      {
        "categoryName": "Home Theater Projectors",
        "salesValue": 45004,
        "naturalLog": 10.714
      },
      {
        "categoryName": "Game Controllers",
        "salesValue": 43522,
        "naturalLog": 10.681
      },
      {
        "categoryName": "Remote Controls",
        "salesValue": 28946,
        "naturalLog": 10.273
      },
      {
        "categoryName": "VR Games",
        "salesValue": 32272,
        "naturalLog": 10.382
      }
    ]
  }
]