Aracılığıyla paylaş


güncelleştirmek

update komutu, bir koleksiyondaki mevcut belgeleri değiştirmek için kullanılır. Bu update komut, filtreleme ölçütlerine göre bir veya birden çok belgeyi güncelleştirmek için kullanılabilir. Alanların değerleri değiştirilebilir, yeni alanlar ve değerler eklenebilir ve mevcut alanlar kaldırılabilir.

Örnekler

StoreData veritabanındaki stores koleksiyonundan bu örnek belgeyi göz önünde bulundurun.

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

Örnek 1 - $inc işlecini kullanarak tek bir belgeyi güncelleştirme

TotalSales değerini 10 artırıp belirtilen _id sahip bir belge için tam zamanlı personel sayısını azaltma.

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

Örnek 2 - $min işlecini kullanarak tek bir belgeyi güncelleştirme

Alanın geçerli değeri 10'dan büyükse, belirtilen _id belgenin totalStaff sayısını 10 olarak güncelleştirin.

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

Örnek 3 - $max işlecini kullanarak tek bir belgeyi güncelleştirme

Alanın geçerli değeri 14'ten küçükse, belirtilen _id belgenin totalStaff sayısını 14 olarak güncelleştirin.

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

Örnek 4 - $mul işlecini kullanarak tek bir belgeyi güncelleştirme

Belirtilen _id değerine sahip belge için yarı zamanlı çalışanların sayısını 2'ye katlar.

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

Örnek 5 - $rename işlecini kullanarak tek bir belgeyi güncelleştirme

totalSales ve totalStaff alanlarını sırasıyla fullSales ve staffCounts olarak yeniden adlandırın.

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

Örnek 6 - $set işlecini kullanarak tek bir belgeyi güncelleştirme

Belirtilen _id değeriyle belge için fullSales alanını 3700 olarak ayarlayın.

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

Örnek 7 - $unset işlecini kullanarak tek bir belgeyi güncelleştirme

Belirtilen _id değeriyle belgedeki konum nesnesinden lon alanını kaldırın.

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

Örnek 8 - Birden çok belgeyi güncelleştirme

İlk tanıtım etkinliğinin Şubat ayında başladığı tüm belgeleri Mart ayında başlayacak şekilde güncelleştirin.

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

Örnek 9 - Tek bir belge ekleme

Sorgu filtresinde belirtilen belge koleksiyonda yoksa yeni bir belge oluşturmak için upsert bayrağını true olarak ayarlayın.

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