MongoDB में $inc ऑपरेटर से फील्ड इन्क्रीमेंट करना
MongoDB में किसी न्यूमेरिक फील्ड की वैल्यू बढ़ाने के लिए $inc ऑपरेटर का उपयोग करें। यह एटॉमिक ऑपरेशन है।
उदाहरण: कलेक्शन और डॉक्यूमेंट्स बनाना
> db.incrementDemo.insertOne({"PlayerScore":100});
{ "acknowledged" : true, "insertedId" : ObjectId("5cc81cdd8f9e6ff3eb0ce44e") }
> db.incrementDemo.insertOne({"PlayerScore":290});
{ "acknowledged" : true, "insertedId" : ObjectId("5cc81ce28f9e6ff3eb0ce44f") }
> db.incrementDemo.insertOne({"PlayerScore":560});
{ "acknowledged" : true, "insertedId" : ObjectId("5cc81ce68f9e6ff3eb0ce450") }
सभी डॉक्यूमेंट्स देखना
> db.incrementDemo.find().pretty();
आउटपुट:
{ "_id" : ObjectId("5cc81cdd8f9e6ff3eb0ce44e"), "PlayerScore" : 100 }
{ "_id" : ObjectId("5cc81ce28f9e6ff3eb0ce44f"), "PlayerScore" : 290 }
{ "_id" : ObjectId("5cc81ce68f9e6ff3eb0ce450"), "PlayerScore" : 560 }
विशिष्ट डॉक्यूमेंट का PlayerScore 10 से इन्क्रीमेंट करना
> db.incrementDemo.update({ _id:ObjectId("5cc81ce28f9e6ff3eb0ce44f") }, { $inc: {"PlayerScore":10 } });
WriteResult({ "nMatched" : 1, "nUpserted" : 0, "nModified" : 1 })
परिणाम वेरिफाई करना
> db.incrementDemo.find().pretty();
आउटपुट:
{ "_id" : ObjectId("5cc81cdd8f9e6ff3eb0ce44e"), "PlayerScore" : 100 }
{ "_id" : ObjectId("5cc81ce28f9e6ff3eb0ce44f"), "PlayerScore" : 300 }
{ "_id" : ObjectId("5cc81ce68f9e6ff3eb0ce450"), "PlayerScore" : 560 }
मुख्य विशेषताएं:
- एटॉमिक: कॉन्करेंट अपडेट्स में भी सेफ
- नेगेटिव वैल्यू: डिक्रीमेंट के लिए नेगेटिव नंबर दें:
{$inc: {score: -5}} - फील्ड न होने पर: नया फील्ड बना देता है (upsert के साथ)
- मल्टीपल फील्ड्स:
{$inc: {field1: 1, field2: 5, field3: -2}} - डॉट नोटेशन: नेस्टेड फील्ड्स:
{$inc: {"stats.views": 1}}
उपयोग केस: काउंटर्स, स्कोर्स, इन्वेंट्री, पेज व्यूज, लाइक्स आदि।