Bagikan melalui


perbarui

Perintah update digunakan untuk mengubah dokumen yang ada dalam koleksi. Perintah update dapat digunakan untuk memperbarui satu atau beberapa dokumen berdasarkan kriteria pemfilteran. Nilai bidang dapat diubah, bidang dan nilai baru dapat ditambahkan dan bidang yang sudah ada dapat dihapus.

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 satu dokumen menggunakan operator $inc

Menaikkan totalSales sebesar 10 dan mengurangi jumlah staf penuh waktu untuk dokumen dengan _id yang ditentukan.

db.stores.updateOne({"_id": "0fcc0bf0-ed18-4ab8-b558-9848e18058f4"}, {"$inc": {"sales.salesByCategory.0.totalSales": 10, "staff.totalStaff.fullTime": -6}})

Contoh 2 - Memperbarui satu dokumen menggunakan operator $min

Perbarui jumlah totalStaff untuk dokumen dengan _id yang ditentukan menjadi 10 jika nilai bidang saat ini lebih besar dari 10.

db.stores.updateOne({"_id": "0fcc0bf0-ed18-4ab8-b558-9848e18058f4"}, {"$min": {"staff.totalStaff.fullTime": 10}})

Contoh 3 - Memperbarui satu dokumen menggunakan operator $max

Perbarui jumlah totalStaff untuk dokumen dengan _id yang ditentukan menjadi 14 jika nilai bidang saat ini kurang dari 14.

db.stores.updateOne({"_id": "0fcc0bf0-ed18-4ab8-b558-9848e18058f4"}, {"$max": {"staff.totalStaff.fullTime": 14}})

Contoh 4 - Memperbarui satu dokumen menggunakan operator $mul

Beberapa jumlah karyawan paruh waktu sebesar 2 untuk dokumen dengan nilai _id yang ditentukan.

db.stores.updateOne({"_id": "0fcc0bf0-ed18-4ab8-b558-9848e18058f4"}, {"$mul": {"staff.totalStaff.partTime": 2}})

Contoh 5 - Memperbarui satu dokumen menggunakan operator $rename

Ganti nama bidang totalSales dan totalStaff menjadi fullSales dan staffCounts masing-masing.

db.stores.updateOne({"_id": "0fcc0bf0-ed18-4ab8-b558-9848e18058f4"}, {"$rename": {"sales.totalSales": "sales.fullSales", "staff.totalStaff": "staff.staffCounts"}})

Contoh 6 - Memperbarui satu dokumen menggunakan operator $set

Atur bidang fullSales ke 3700 untuk dokumen dengan nilai _id yang ditentukan.

db.stores.updateOne({"_id": "0fcc0bf0-ed18-4ab8-b558-9848e18058f4"}, {"$set": {"sales.fullSales": 3700}})

Contoh 7 - Memperbarui satu dokumen menggunakan operator $unset

Hapus bidang lon dari objek lokasi dalam dokumen dengan nilai _id yang ditentukan.

db.stores.updateOne({"_id": "0fcc0bf0-ed18-4ab8-b558-9848e18058f4"}, {"$unset": {"location.lon": ""}})

Contoh 8 - Memperbarui beberapa dokumen

Perbarui semua dokumen tempat acara promosi pertama dimulai pada bulan Februari untuk dimulai pada bulan Maret.

db.stores.updateMany({"promotionEvents.0.promotionalDates.startDate.Month": 2}, {"$inc": {"promotionEvents.0.promotionalDates.startDate.Month": 1}})

Contoh 9 - Upsert satu dokumen

Atur bendera upsert ke true untuk membuat dokumen baru jika dokumen yang ditentukan dalam filter kueri tidak ada dalam koleksi.

db.stores.updateOne({"_id": "NonExistentDocId"}, {"$set": {"name": "Lakeshore Retail", "sales.totalSales": 0}}, {"upsert": true})