Bagikan melalui


$set (agregasi)

Operator $set memperbarui bidang yang sudah ada atau membuat bidang baru dengan nilai yang ditentukan jika tidak ada. Satu atau beberapa bidang yang tercantum diperbarui atau dibuat. Notasi titik digunakan untuk memperbarui atau membuat objek berlapis.

Sintaksis

{
  "$set": {
    "newField": <expression>,
    ...
  }
}

Parameter-parameternya

Pengaturan Deskripsi
newField Nama bidang yang akan diperbarui atau dibuat
expression Ekspresi yang menentukan nilai bidang baru atau yang diperbarui

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 - Memperbarui bidang yang sudah ada

db.stores.updateOne({"_id": "8eefe8bd-5d6f-4038-90e8-05a8277637f0"}, {"$set": {"name": "Lakeshore Retail"}})

Contoh 2 - Memperbarui bidang yang sudah ada dalam objek berlapis

db.stores.updateOne({"_id": "8eefe8bd-5d6f-4038-90e8-05a8277637f0"}, {"$set": {"staff.totalStaff.partTime": 9}})

Contoh 3 - Buat bidang baru yang tidak ada

Buat bidang baru bernama "formerName" dengan nama lama toko.

db.stores.updateOne({"_id": "8eefe8bd-5d6f-4038-90e8-05a8277637f0"}, {"$set": {"formerName": "Tailwind Traders | Drone Shoppe - New Theodora"}})

Contoh 4 - Membuat bidang baru di objek berlapis

Buat bidang baru dalam objek totalStaff berlapis untuk menentukan jumlah anggota staf sementara.

db.stores.updateOne({"_id": "8eefe8bd-5d6f-4038-90e8-05a8277637f0"}, {"$set": {"staff.totalStaff.temporary": 3}})

Contoh 5 - Memperbarui beberapa bidang

db.stores.updateOne({"_id": "8eefe8bd-5d6f-4038-90e8-05a8277637f0"}, {"$set": {"staff.totalStaff.partTime": 9, "sales.totalSales": 3611}})