MongoDB में findOneAndUpdate(): एटॉमिक खोज और अपडेट
findOneAndUpdate() एक ही एटॉमिक ऑपरेशन में एक दस्तावेज़ को ढूंढता है, अपडेट करता है, और पुराना दस्तावेज़ वापस करता है (डिफ़ॉल्ट रूप से)। यह रेस कंडीशन से बचाता है।
सिंटैक्स
db.collection.findOneAndUpdate(filter, update, options)
नमूना डेटा
> db.demo328.insertOne({Name: "Chris", Marks: 67});
{ "acknowledged": true, "insertedId": ObjectId("5e516b19f8647eb59e56207a") }
> db.demo328.insertOne({Name: "David", Marks: 78});
{ "acknowledged": true, "insertedId": ObjectId("5e516b24f8647eb59e56207b") }
> db.demo328.insertOne({Name: "Bob", Marks: 97});
{ "acknowledged": true, "insertedId": ObjectId("5e516b2bf8647eb59e56207c") }
क्वेरी: David के Marks को 10 से बढ़ाना
$inc ऑपरेटर का उपयोग करके परमाणु रूप से वृद्धि करें।
> db.demo328.findOneAndUpdate({Name: "David"}, {$inc: {"Marks": 10}});
{ "_id": ObjectId("5e516b24f8647eb59e56207b"), "Name": "David", "Marks": 78 }
वापस किया गया दस्तावेज़ अपडेट से पहले की स्थिति दिखाता है (Marks: 78)।
सत्यापन
> db.demo328.find();
{ "Name": "Chris", "Marks": 67 }
{ "Name": "David", "Marks": 88 } // अपडेट हुआ
{ "Name": "Bob", "Marks": 97 }
महत्वपूर्ण विकल्प
returnDocument: "after"— अपडेट बाद का दस्तावेज़ वापस करता है।upsert: true— यदि कोई दस्तावेज़ नहीं मिलता तो नया बनाता है।sort— एकाधिक मिलान होने पर कौन सा दस्तावेज़ अपडेट करना है, यह नियंत्रित करता है।