إشعار
يتطلب الوصول إلى هذه الصفحة تخويلاً. يمكنك محاولة تسجيل الدخول أو تغيير الدلائل.
يتطلب الوصول إلى هذه الصفحة تخويلاً. يمكنك محاولة تغيير الدلائل.
findAndModify يتم استخدام الأمر لتعديل مستند واحد وإرجاعه بشكل ذري. هذا الأمر مفيد للعمليات التي تتطلب قراءة مستند وتحديثه في خطوة واحدة، ما يضمن تناسق البيانات. تتضمن حالات الاستخدام الشائعة تنفيذ العدادات وقوائم الانتظار والعمليات الذرية الأخرى.
إعراب
بناء الجملة findAndModify للأمر كما يلي:
db.collection.findAndModify({
query: <document>,
sort: <document>,
remove: <boolean>,
update: <document>,
new: <boolean>,
fields: <document>,
upsert: <boolean>
})
Parameters
- الاستعلام: معايير التحديد للمستند المطلوب تعديله.
- الفرز: يحدد المستند الذي يجب تعديله إذا كان الاستعلام يحدد مستندات متعددة.
-
إزالة: إذا
true، يزيل المستند المحدد. - تحديث: التعديلات التي يجب تطبيقها.
-
new: إذا
true، فترجع المستند المعدل بدلا من المستند الأصلي. - الحقول: يحد من الحقول التي يجب إرجاعها للمستند المطابق.
-
upsert: إذا ،
trueينشئ مستندا جديدا إذا لم يتطابق أي مستند مع الاستعلام.
أمثلة
مثال 1: تحديث إجمالي المبيعات
لنفترض أننا نريد تحديث إجمالي المبيعات للمتجر باستخدام _id "e5767a9f-cd95-439c-9ec4-7ddc13d22926" إلى 550000.00 المستند المحدث وإعادته.
db.stores.findAndModify({
query: { "_id": "e5767a9f-cd95-439c-9ec4-7ddc13d22926" },
update: { $set: { "sales.totalSales": 550000.00 } },
new: true
})
عينة الإخراج
[mongos] StoreData> db.stores.findAndModify({
... query: { "_id": "e5767a9f-cd95-439c-9ec4-7ddc13d22926" },
... update: { $set: { "sales.totalSales": 550000.00 } },
... new: true
... })
{
_id: 'e5767a9f-cd95-439c-9ec4-7ddc13d22926',
name: "Marina's Eyewear Bargains",
location: { lat: -87.4376, lon: 42.2928 },
staff: { totalStaff: { fullTime: 20, partTime: 6 } },
sales: {
totalSales: 550000,
salesByCategory: [
{ categoryName: 'Round Sunglasses', totalSales: 39621 },
{ categoryName: 'Reading Glasses', totalSales: 1146 },
{ categoryName: 'Aviators', totalSales: 9385 }
]
},
promotionEvents: [
{
eventName: 'Incredible Discount Days',
promotionalDates: {
startDate: { Year: 2024, Month: 2, Day: 11 },
endDate: { Year: 2024, Month: 2, Day: 18 }
},
discounts: [
{ categoryName: 'Square Sunglasses', discountPercentage: 16 },
{ categoryName: 'Safety Glasses', discountPercentage: 17 },
{ categoryName: 'Wayfarers', discountPercentage: 7 },
{ categoryName: 'Eyewear Accessories', discountPercentage: 12 }
]
}
],
tag: [
'#ShopLocal',
'#FashionStore',
'#SeasonalSale',
'#FreeShipping',
'#MembershipDeals'
]
}
مثال 2: إضافة حدث ترويجي جديد
دعونا نضيف حدثا ترويجيا جديدا يسمى "موفر الإلكترونيات الفائقة" إلى المتجر باستخدام _id_ "e5767a9f-cd95-439c-9ec4-7ddc13d22926" ونعيد المستند المحدث.
db.stores.findAndModify({
query: { "_id": "e5767a9f-cd95-439c-9ec4-7ddc13d22926" },
update: { $push: { "promotionEvents": {
"eventName": "Electronics Super Saver",
"promotionalDates": {
"startDate": "2025-09-31",
"endDate": "2025-09-31"
},
"discounts": [
{
"categoryName": "Laptops",
"discountPercentage": 45
},
{
"categoryName": "Smartphones",
"discountPercentage": 25
}
]
}}},
new: true
})
عينة الإخراج
[mongos] StoreData> db.stores.findAndModify({
... query: { "_id": "e5767a9f-cd95-439c-9ec4-7ddc13d22926" },
... update: { $push: { "promotionEvents": {
... "eventName": "Electronics Super Saver",
... "promotionalDates": {
... "startDate": "2025-09-31",
... "endDate": "2025-09-31"
... },
... "discounts": [
... {
... "categoryName": "Laptops",
... "discountPercentage": 45
... },
... {
... "categoryName": "Smartphones",
... "discountPercentage": 25
... }
... ]
... }}},
... new: true
... })
{
_id: 'e5767a9f-cd95-439c-9ec4-7ddc13d22926',
name: "Marina's Eyewear Bargains",
location: { lat: -87.4376, lon: 42.2928 },
staff: { totalStaff: { fullTime: 20, partTime: 6 } },
sales: {
totalSales: 550000,
salesByCategory: [
{ categoryName: 'Round Sunglasses', totalSales: 39621 },
{ categoryName: 'Reading Glasses', totalSales: 1146 },
{ categoryName: 'Aviators', totalSales: 9385 }
]
},
promotionEvents: [
{
eventName: 'Electronics Super Saver',
promotionalDates: { startDate: '2025-09-31', endDate: '2025-09-31' },
discounts: [
{ categoryName: 'Laptops', discountPercentage: 45 },
{ categoryName: 'Smartphones', discountPercentage: 25 }
]
}
],
tag: [
'#ShopLocal',
'#FashionStore',
'#SeasonalSale',
'#FreeShipping',
'#MembershipDeals'
]
}
مثال 3: إزالة حدث ترويجي
لنفترض أننا نريد إزالة الحدث الترويجي "توفير سوبر الإلكترونيات" من المتجر باستخدام _id "e5767a9f-cd95-439c-9ec4-7ddc13d22926" وإرجاع المستند الأصلي.
db.stores.findAndModify({
query: { "_id": "e5767a9f-cd95-439c-9ec4-7ddc13d22926" },
update: { $pull: { "promotionEvents": { "eventName": "Electronics Super Saver" } } },
new: true
})
عينة الإخراج
[mongos] StoreData> db.stores.findAndModify({
... query: { "_id_": "e5767a9f-cd95-439c-9ec4-7ddc13d22926" },
... update: { $pull: { "promotionEvents": { "eventName": "Electronics Super Saver" } } },
... new: true
... })
null
[mongos] StoreData> db.stores.findAndModify({
... query: { "_id": "e5767a9f-cd95-439c-9ec4-7ddc13d22926" },
... update: { $pull: { "promotionEvents": { "eventName": "Electronics Super Saver" } } },
... new: true
... })
{
_id: 'e5767a9f-cd95-439c-9ec4-7ddc13d22926',
name: "Marina's Eyewear Bargains",
location: { lat: -87.4376, lon: 42.2928 },
staff: { totalStaff: { fullTime: 20, partTime: 6 } },
sales: {
totalSales: 550000,
salesByCategory: [
{ categoryName: 'Round Sunglasses', totalSales: 39621 },
{ categoryName: 'Reading Glasses', totalSales: 1146 },
{ categoryName: 'Aviators', totalSales: 9385 }
]
},
promotionEvents: [
{
eventName: 'Incredible Discount Days',
promotionalDates: {
startDate: { Year: 2024, Month: 2, Day: 11 },
endDate: { Year: 2024, Month: 2, Day: 18 }
},
discounts: [
{ categoryName: 'Square Sunglasses', discountPercentage: 16 },
{ categoryName: 'Safety Glasses', discountPercentage: 17 },
{ categoryName: 'Wayfarers', discountPercentage: 7 },
{ categoryName: 'Eyewear Accessories', discountPercentage: 12 }
]
}
],
tag: [
'#ShopLocal',
'#FashionStore',
'#SeasonalSale',
'#FreeShipping',
'#MembershipDeals'
]
}
محتوى ذو صلة
- مراجعة خيارات الترحيل من MongoDB إلى Azure DocumentDB
- اقرأ المزيد حول توافق الميزات مع MongoDB