$set

İşleç $set mevcut bir alanı güncelleştirir veya mevcut değilse belirtilen değere sahip yeni bir alan oluşturur. Listelenen bir veya daha fazla alan güncelleştirilir veya oluşturulur. Nokta gösterimi, iç içe nesneleri güncelleştirmek veya oluşturmak için kullanılır.

Sözdizimi

{
  $set: {
    newField: <expression>
  }
}

Parametreler

Parametre Description
newField Güncelleştirilecek veya oluşturulacak alanın adı
expression Yeni veya güncelleştirilmiş alanın değerini tanımlayan ifade

Örnekler

Stores koleksiyonundaki 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 - Varolan bir alanı güncelleştirme

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

Örnek 2 - İç içe nesnedeki mevcut bir alanı güncelleştirme

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

Örnek 3 - Var olmayan yeni bir alan oluşturma

Mağazanın eski adıyla "formerName" adlı yeni bir alan oluşturun.

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

Örnek 4 - İç içe nesnede yeni alan oluşturma

Geçici personel üyelerinin sayısını belirtmek için iç içe totalStaff nesnesi içinde yeni bir alan oluşturun.

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

Örnek 5 - Birden çok alanı güncelleştirme

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