MongoDB में $inc ऑपरेटर का उपयोग करके नेस्टेड फील्ड को इनक्रीमेंट करना
MongoDB में नेस्टेड ऑब्जेक्ट के संख्यात्मक फील्ड को बढ़ाने/घटाने के लिए $inc ऑपरेटर का उपयोग करें। यह एटॉमिक ऑपरेशन है और केवल निर्दिष्ट फील्ड को प्रभावित करता है।
उदाहरण: संग्रह और दस्तावेज़ बनाना
> db.demo57.insertOne({"Votes":{"VoterName":"Chris","TotalVote":50}});
{ "acknowledged" : true, "insertedId" : ObjectId("5e285bb8cfb11e5c34d8991a") }
> db.demo57.insertOne({"Votes":{"VoterName":"David","TotalVote":101}});
{ "acknowledged" : true, "insertedId" : ObjectId("5e285bc3cfb11e5c34d8991b") }
सभी दस्तावेज़ देखना
> db.demo57.find();
आउटपुट:
{ "_id" : ObjectId("5e285bb8cfb11e5c34d8991a"), "Votes" : { "VoterName" : "Chris", "TotalVote" : 50 } }
{ "_id" : ObjectId("5e285bc3cfb11e5c34d8991b"), "Votes" : { "VoterName" : "David", "TotalVote" : 101 } }
David के TotalVote को 19 से बढ़ाना
> db.demo57.update(
{"Votes.VoterName":"David" },
{ $inc : { "Votes.TotalVote" : 19 } }
);
WriteResult({ "nMatched" : 1, "nUpserted" : 0, "nModified" : 1 })
अपडेट के बाद दस्तावेज़ देखना
> db.demo57.find();
आउटपुट:
{ "_id" : ObjectId("5e285bb8cfb11e5c34d8991a"), "Votes" : { "VoterName" : "Chris", "TotalVote" : 50 } }
{ "_id" : ObjectId("5e285bc3cfb11e5c34d8991b"), "Votes" : { "VoterName" : "David", "TotalVote" : 120 } }
मुख्य बिंदु:
Votes.VoterName- डॉट नोटेशन से नेस्टेड फील्ड क्वेरी$inc- एटॉमिक इनक्रीमेंट (नकारात्मक मान से डिक्रीमेंट)Votes.TotalVote- अपडेट करने वाला नेस्टेड फील्ड पथ- केवल मिलान करने वाला दस्तावेज़ अपडेट होता है (डिफ़ॉल्ट व्यवहार)
उपयोग के मामले: वोटिंग सिस्टम, काउंटर, इन्वेंट्री प्रबंधन, स्कोर ट्रैकिंग।
नोट: $inc केवल संख्यात्मक मानों पर काम करता है। फील्ड मौजूद न होने पर यह इसे बना देता है।