مشاركة عبر


update

update يتم استخدام الأمر لتعديل المستندات الموجودة داخل مجموعة. update يمكن استخدام الأمر لتحديث مستند واحد أو عدة مستندات استنادا إلى معايير التصفية. يمكن تغيير قيم الحقول، ويمكن إضافة حقول وقيم جديدة، كما يمكن إزالة الحقول الموجودة.

المثال (الأمثلة)

خذ بعين الاعتبار نموذج المستند هذا من مجموعة المتاجر في قاعدة بيانات 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
                }
            ]
        }
    ]
}

مثال 1 - تحديث مستند واحد باستخدام عامل تشغيل $inc

زيادة إجمالي الأقساط بمقدار 10 وإنقاص عدد الموظفين المتفرغين لمستند مع _id المحدد.

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

مثال 2 - تحديث مستند واحد باستخدام عامل التشغيل $min

قم بتحديث إجمالي عدد الموظفين للمستند مع _id المحدد إلى 10 إذا كانت القيمة الحالية للحقل أكبر من 10.

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

مثال 3 - تحديث مستند واحد باستخدام عامل التشغيل $max

قم بتحديث إجمالي عدد الموظفين للمستند مع _id المحدد إلى 14 إذا كانت القيمة الحالية للحقل أقل من 14.

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

مثال 4 - تحديث مستند واحد باستخدام عامل التشغيل $mul

تعدد عدد الموظفين بدوام جزئي بمقدار 2 للمستند بقيمة _id المحددة.

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

مثال 5 - تحديث مستند واحد باستخدام عامل التشغيل $rename

أعد تسمية حقول totalSales و totalStaff إلى fullSales و staffCounts على التوالي.

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

مثال 6 - تحديث مستند واحد باستخدام عامل التشغيل $set

تعيين الحقل fullSales إلى 3700 للمستند بقيمة _id المحددة.

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

مثال 7 - تحديث مستند واحد باستخدام عامل التشغيل $unset

قم بإزالة الحقل lon من كائن الموقع في المستند بقيمة _id المحددة.

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

مثال 8 - تحديث مستندات متعددة

قم بتحديث جميع المستندات حيث يبدأ الحدث الترويجي الأول في فبراير ليبدأ في مارس.

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

مثال 9 - رفع مستند واحد

قم بتعيين علامة upsert إلى true لإنشاء مستند جديد إذا لم يكن المستند المحدد في عامل تصفية الاستعلام موجودا في المجموعة.

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