Compartir a través de


actualización

El update comando se usa para modificar los documentos existentes dentro de una colección. El update comando se puede usar para actualizar uno o varios documentos en función de los criterios de filtrado. Los valores de los campos se pueden cambiar, se pueden agregar nuevos campos y valores y se pueden quitar los campos existentes.

Ejemplos

Ten en cuenta este documento de ejemplo de la colección "Stores" en la base de datos 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
                }
            ]
        }
    ]
}

Ejemplo 1: Actualización de un único documento mediante el operador $inc

Aumente el valor de totalSales en 10 y reduzca el número de empleados a tiempo completo de un documento con el _id especificado.

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

Ejemplo 2: actualización de un único documento mediante el operador $min

Actualice el conteo de totalStaff del documento con el _id especificado a 10 si el valor actual del campo es mayor que 10.

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

Ejemplo 3: actualización de un único documento mediante el operador $max

Actualice el recuento totalStaff del documento con el _id especificado a 14 si el valor actual del campo es inferior a 14.

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

Ejemplo 4: Actualización de un único documento mediante el operador $mul

Multiplica el número de empleados a tiempo parcial por 2 para el documento con el valor _id especificado.

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

Ejemplo 5: actualización de un único documento mediante el operador $rename

Cambie el nombre de los campos totalSales y totalStaff a fullSales y staffCounts respectivamente.

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

Ejemplo 6: actualización de un único documento mediante el operador $set

Establezca el campo fullSales en 3700 para el documento con el valor de _id especificado.

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

Ejemplo 7: actualización de un único documento mediante el operador $unset

Elimine el campo lon del objeto de ubicación del documento con el valor de _id especificado.

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

Ejemplo 8: Actualización de varios documentos

Actualice todos los documentos en los que el primer evento promocional comienza en febrero para comenzar en marzo.

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

Ejemplo 9: Upsert de un único documento

Configure la marca upsert en true para crear un nuevo documento si el documento especificado en el filtro de consulta no existe en la colección.

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