إشعار
يتطلب الوصول إلى هذه الصفحة تخويلاً. يمكنك محاولة تسجيل الدخول أو تغيير الدلائل.
يتطلب الوصول إلى هذه الصفحة تخويلاً. يمكنك محاولة تغيير الدلائل.
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})