MongoDB findAndModify() से इंक्रीमेंट के बाद अपडेटेड डॉक्यूमेंट प्राप्त करें
findAndModify() (या नया findOneAndUpdate()) एटॉमिकली डॉक्यूमेंट अपडेट करके नया अपडेटेड वर्जन लौटाता है।
कलेक्शन बनाएं और डॉक्यूमेंट इन्सर्ट करें
> db.returnResultOfIncementDemo.insertOne({"PlayerScore": 98});
{ "acknowledged": true, "insertedId": ObjectId("5cd3c292edc6604c74817cda") }
डॉक्यूमेंट देखें
> db.returnResultOfIncementDemo.find();
{ "_id": ObjectId("5cd3c292edc6604c74817cda"), "PlayerScore": 98 }
findAndModify से इंक्रीमेंट करें और नया डॉक्यूमेंट प्राप्त करें
> db.returnResultOfIncementDemo.findAndModify({
query: {},
update: {$inc: {PlayerScore: 2}},
new: true
});
{ "_id": ObjectId("5cd3c292edc6604c74817cda"), "PlayerScore": 100 }
पैरामीटर समझें
query: {}- पहला डॉक्यूमेंट चुनें (खाली क्वेरी)update: {$inc: {PlayerScore: 2}}- स्कोर 2 बढ़ाएंnew: true- अपडेटेड डॉक्यूमेंट लौटाएं (डिफ़ॉल्ट false = पुराना डॉक्यूमेंट)
आधुनिक विकल्प: findOneAndUpdate() (MongoDB 3.2+)
db.returnResultOfIncementDemo.findOneAndUpdate(
{},
{$inc: {PlayerScore: 2}},
{returnDocument: "after"} // "after" = नया, "before" = पुराना
)
उपयोग के मामले
- काउंटर/सीक्वेंस जनरेशन
- रियल-टाइम स्कोर अपडेट
- इन्वेंटरी डिक्रीमेंट के बाद नया स्टॉक चेक
- एटॉमिक रीड-राइट ऑपरेशन