Computer >> कंप्यूटर ट्यूटोरियल >  >> प्रोग्रामिंग >> MongoDB

MongoDB में findAndModify से इंक्रीमेंट का परिणाम प्राप्त करें

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" = पुराना
)

उपयोग के मामले

  • काउंटर/सीक्वेंस जनरेशन
  • रियल-टाइम स्कोर अपडेट
  • इन्वेंटरी डिक्रीमेंट के बाद नया स्टॉक चेक
  • एटॉमिक रीड-राइट ऑपरेशन
  1. - MongoDB में विशिष्ट एम्बेडेड दस्तावेज़ कैसे लौटाएं?

    MongoDB में विशिष्ट एम्बेडेड दस्तावेज़ के लिए $unwind का दो बार उपयोग करें। नमूना डेटा बनाना (नेस्टेड ऐरे) db.demo631.insert( { id: 101, Info1: [ { CountryName: US, Info2: [ { Name:Chris, Age:24 }, { Name:Bob, Age:22 } ] } ] } ); दस्तावेज़ देखना db.demo631.find(); { id : 101, Info1 : [

  1. - MongoDB Aggregate एकाधिक परिणाम ग्रुप करें?

    एकाधिक परिणाम एग्रीगेट करने के लिए MongoDB में $group का उपयोग करें। आइए एक कलेक्शन बनाते हैं: > db.demo765.insertOne( { Name:John, Category:ComputerScience, SubjectName:MongoDB, Marks:75 } ); { acknowledged : true, insertedId : ObjectId(5eb054525637cd592b2a4b01) } > db.demo765.insertOne( { N

  1. - C++ में क्या मैं जीत सकता हूँ

    मान लीजिए 100 गेम नामक एक गेम में, दो खिलाड़ी बारी-बारी से रनिंग टोटल में 1 से 10 तक का कोई भी इंटीजर जोड़ते हैं। जो खिलाड़ी पहले रनिंग टोटल को 100 तक पहुंचाता है या उससे अधिक करता है, वह जीतता है। तो क्या होगा अगर हम गेम को इस तरह बदल दें कि खिलाड़ी इंटीजर्स को दोबारा उपयोग न कर सकें? = 100 तक नही