Partager via


update

La update commande est utilisée pour modifier des documents existants dans une collection. La update commande peut être utilisée pour mettre à jour un ou plusieurs documents en fonction des critères de filtrage. Les valeurs des champs peuvent être modifiées, les nouveaux champs et les valeurs peuvent être ajoutés et les champs existants peuvent être supprimés.

Exemple(s)

Considérez cet exemple de document à partir de la collection de magasins dans la base de données 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
                }
            ]
        }
    ]
}

Exemple 1 : mettre à jour un document unique à l’aide de l’opérateur $inc

Incrémentez le totalSales de 10 et décrémentez le nombre d’employés à temps plein pour un document avec le _id spécifié.

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

Exemple 2 : Mettre à jour un document unique à l’aide de l’opérateur $min

Mettez à jour le nombre totalStaff pour le document avec le _id spécifié à 10 si la valeur actuelle du champ est supérieure à 10.

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

Exemple 3 : Mettre à jour un document unique à l’aide de l’opérateur $max

Mettez à jour le nombre totalStaff pour le document avec le _id spécifié à 14 si la valeur actuelle du champ est inférieure à 14.

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

Exemple 4 : Mettre à jour un document unique à l’aide de l’opérateur $mul

Plusieurs nombres d’employés à temps partiel de 2 pour le document avec la valeur _id spécifiée.

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

Exemple 5 : Mettre à jour un document unique à l’aide de l’opérateur $rename

Renommez les champs totalSales et totalStaff en fullSales et staffCounts respectivement.

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

Exemple 6 : Mettre à jour un document unique à l’aide de l’opérateur $set

Définissez le champ fullSales sur 3700 pour le document avec la valeur _id spécifiée.

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

Exemple 7 : Mettre à jour un document unique à l’aide de l’opérateur $unset

Supprimez le champ lon de l’objet d’emplacement du document avec la valeur _id spécifiée.

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

Exemple 8 - Mettre à jour plusieurs documents

Mettez à jour tous les documents où commence le premier événement promotionnel en février pour commencer en mars.

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

Exemple 9 - Upsert un seul document

Définissez l’indicateur upsert sur true pour créer un document si le document spécifié dans le filtre de requête n’existe pas dans la collection.

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