Bagikan melalui


$convert

BERLAKU UNTUK: MongoDB vCore

Operator $convert mengonversi ekspresi menjadi nilai dari jenis yang ditentukan. Operator $convert juga melakukan tindakan tertentu jika konversi ekspresi input ke jenis yang ditentukan gagal.

Sintaksis

Sintaks untuk $convert operator adalah:

{ "$convert": {"input": <expression>, "to": <type>, "format": <binData format>, "onError": <value to return on error>, "onNull": <value to return on null> }

Parameter-parameternya

Pengaturan Deskripsi
input Nilai input yang akan dikonversi ke jenis yang ditentukan
to Jenis yang digunakan untuk mengonversi nilai masukan menjadi
format (Opsional) Format binData input atau output saat mengonversi nilai ke atau dari binData
onError (Opsional) Nilai yang akan dikembalikan ketika konversi input ke jenis yang ditentukan gagal
onNull (Opsional) Nilai yang akan dikembalikan ketika nilai input yang akan dikonversi ke jenis yang ditentukan null atau hilang

Contoh

Pertimbangkan dokumen sampel ini dari koleksi penyimpanan di database StoreData.

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

Contoh 1: Mengonversi nilai Int menjadi String

db.stores.aggregate([
{
    "$match": {
        "_id": "b0107631-9370-4acd-aafa-8ac3511e623d"
    }
},
{
    "$project": {
        "fulltimeStaff": "$staff.totalStaff.fullTime",
        "fulltimeStaffAsString": {
            "$convert": {
                "input": "$staff.totalStaff.fullTime",
                "to": "string"
            }
        }
    }
}])

Kueri ini mengembalikan hasil berikut:

{
    "_id": "b0107631-9370-4acd-aafa-8ac3511e623d",
    "fulltimeStaff": 3,
    "fulltimeStaffAsString": "3"
}

Contoh 2: Mengonversi nilai Int menjadi nilai Boolean

db.stores.aggregate([
{
    "$match": {
        "_id": "b0107631-9370-4acd-aafa-8ac3511e623d"
    }
},
{
    "$project": {
        "fulltimeStaff": "$staff.totalStaff.fullTime",
        "fulltimeStaffAsBool": {
            "$convert": {
                "input": "$staff.totalStaff.fullTime",
                "to": "bool"
            }
        }
    }
}])

Kueri ini mengembalikan hasil berikut:

{
    "_id": "b0107631-9370-4acd-aafa-8ac3511e623d",
    "fulltimeStaff": 3,
    "fulltimeStaffAsBool": true
}

Contoh 3: Mengonversi nilai Int menjadi nilai Desimal

db.stores.aggregate([
{
    "$match": {
        "_id": "b0107631-9370-4acd-aafa-8ac3511e623d"
    }
},
{
    "$project": {
        "fulltimeStaff": "$staff.totalStaff.fullTime",
        "fulltimeStaffAsDecimal": {
            "$convert": {
                "input": "$staff.totalStaff.fullTime",
                "to": "decimal"
            }
        }
    }
}])

Kueri ini mengembalikan hasil berikut:

{
    "_id": "b0107631-9370-4acd-aafa-8ac3511e623d",
    "fulltimeStaff": 3,
    "fulltimeStaffAsDecimal": "Decimal128('3')"
}

Contoh 4: Mengonversi nilai Int menjadi nilai Panjang

db.stores.aggregate([
{
    "$match": {
        "_id": "b0107631-9370-4acd-aafa-8ac3511e623d"
    }
},
{
    "$project": {
        "fulltimeStaff": "$staff.totalStaff.fullTime",
        "fulltimeStaffAsLong": {
            "$convert": {
                "input": "$staff.totalStaff.fullTime",
                "to": "long"
            }
        }
    }
}])

Kueri ini mengembalikan hasil berikut:

{
    "_id": "b0107631-9370-4acd-aafa-8ac3511e623d",
    "fulltimeStaff": 3,
    "fulltimeStaffAsLong": "Long('3')"
}