$toDecimal

El $toDecimal operador convierte una expresión de entrada en un valor Decimal. Los valores Long, Double o Int se convierten simplemente en un tipo de datos Decimal, mientras que los valores Decimal se devuelven tal como están. Un valor booleano de true se convierte en 1, mientras que un valor booleano false se convierte en 0. Por último, los valores ISODate se convierten en un valor Decimal correspondiente al número de milisegundos desde el 1 de enero de 1970 representado por el valor ISODate.

Syntax

{
    $toDecimal: < expression >
}

Parámetros

Parámetro Description
expression Valor especificado que se va a convertir en un valor decimal

Examples

Considere este documento de ejemplo de la colección de tiendas.

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

Ejemplo 1: Convertir un valor double en un valor decimal

Para convertir el valor del campo de latitud de un valor double a un valor decimal, ejecute una consulta mediante el operador $toDecimal para realizar la conversión.

db.stores.aggregate([{
    $match: {
        _id: "b0107631-9370-4acd-aafa-8ac3511e623d"
    }
}, {
    $project: {
        originalLatitude: "$location.lat",
        latitudeAsDecimal: {
            $toDecimal: "$location.lat"
        }
    }
}])

Esta consulta devuelve el siguiente resultado:

[
    {
        "_id": "b0107631-9370-4acd-aafa-8ac3511e623d",
        "originalLatitude": 72.8377,
        "latitudeAsDecimal": "Decimal128('72.8377000000000')"
    }
]

Ejemplo 2: Convertir un valor ISODate en un valor decimal

Para convertir un valor ISODate en un valor decimal, ejecute una consulta mediante el operador $toDecimal en el valor para realizar la conversión.

db.stores.aggregate([{
    $match: {
        _id: "b0107631-9370-4acd-aafa-8ac3511e623d"
    }
}, {
    $project: {
        dateAsDecimal: {
            $toDecimal: ISODate("2025-01-06T00:00:00.000Z")
        }
    }
}])

Esta consulta devuelve el siguiente resultado:

[
    {
        "_id": "b0107631-9370-4acd-aafa-8ac3511e623d",
        "dateAsDecimal": "Decimal128('1736121600000')"
    }
]