$set

Operatorn $set uppdaterar ett befintligt fält eller skapar ett nytt fält med det angivna värdet om det inte finns. Ett eller flera fält i listan uppdateras eller skapas. Punkt notationen används för att uppdatera eller skapa kapslade objekt.

Syntax

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

Parameterar

Parameter Description
newField Namnet på det fält som ska uppdateras eller skapas
expression Uttrycket som definierar värdet för det nya eller uppdaterade fältet

Examples

Överväg det här exempeldokumentet från butiksamlingen.

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

Exempel 1 – Uppdatera ett befintligt fält

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

Exempel 2 – Uppdatera ett befintligt fält i ett kapslat objekt

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

Exempel 3 – Skapa ett nytt fält som inte finns

Skapa ett nytt fält kallat "formerName" med det gamla namnet på butiken.

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

Exempel 4 – Skapa ett nytt fält i ett kapslat objekt

Skapa ett nytt fält i det kapslade totalStaff-objektet för att ange antalet tillfälligt anställda.

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

Exempel 5 – Uppdatera flera fält

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