MongoDB का $min
है ऑपरेटर जो आपको किसी फ़ील्ड के मान को केवल तभी अपडेट करने की अनुमति देता है जब निर्दिष्ट मान फ़ील्ड के वर्तमान मान से कम हो।
दूसरे शब्दों में, यदि $min
मान दस्तावेज़ में वर्तमान मान से कम है, $min
मूल्य का प्रयोग किया जाता है। अन्यथा, दस्तावेज़ का मूल्य अपरिवर्तित रहता है।
उदाहरण
मान लीजिए हमारे पास golf
. नामक संग्रह है निम्नलिखित दस्तावेज़ के साथ:
{ "_id" : 1, "strokes" : 70 }
और कल्पना करें कि हम गोल्फ के प्रत्येक खेल के बाद नवीनतम स्कोर के साथ दस्तावेज़ को अपडेट करते हैं। इस मामले में, हम केवल strokes
चाहते हैं यदि हमारा नवीनतम स्कोर कम था तो फ़ील्ड को अपडेट किया जाना चाहिए हमारे पिछले स्कोर की तुलना में।
इस मामले में हम $min
. का उपयोग कर सकते हैं उस परिणाम को प्राप्त करने के लिए ऑपरेटर।
उदाहरण:
db.golf.update(
{ _id: 1 },
{ $min: { strokes: 64 } }
)
आउटपुट:
WriteResult({ "nMatched" : 1, "nUpserted" : 0, "nModified" : 1 })
यह संदेश हमें बताता है कि एक दस्तावेज़ का मिलान हुआ और उसे अपडेट किया गया।
आइए फिर से संग्रह की जाँच करें।
db.golf.find()
परिणाम:
{ "_id" : 1, "strokes" : 64 }
हम देख सकते हैं कि strokes
फ़ील्ड को नए मान के साथ अपडेट किया गया था। ऐसा इसलिए है क्योंकि 64 इसके पिछले मान 70 से कम है।
जब मान अधिक हो
जब मान $min
. के साथ निर्दिष्ट किया गया हो दस्तावेज़ में मौजूदा मान से अधिक है, कुछ भी अपडेट नहीं किया गया है।
उदाहरण:
db.golf.update(
{ _id: 1 },
{ $min: { strokes: 72 } }
)
आउटपुट:
WriteResult({ "nMatched" : 1, "nUpserted" : 0, "nModified" : 0 })
हम संदेश से देख सकते हैं कि कुछ भी अपडेट नहीं किया गया था।
आइए फिर से संग्रह की जाँच करें।
db.golf.find()
परिणाम:
{ "_id" : 1, "strokes" : 64 }
हम देख सकते हैं कि मान 64 पर बना हुआ है, भले ही हमने इसे 72 में अपडेट करने का प्रयास किया। यह अपेक्षित है, क्योंकि हमने $min
का उपयोग किया है ।
तारीख
आप $min
. का उपयोग कर सकते हैं दिनांक फ़ील्ड पर।
मान लीजिए हमारे पास एक collection
है निम्नलिखित दस्तावेज के साथ प्रजाति कहा जाता है:
{ "_id" : 1, "firstDiscovered" : ISODate("2000-01-01T00:00:00Z") }
आइए उस तारीख के साथ तारीख को अपडेट करने का प्रयास करें जो दस्तावेज़ में वर्तमान तिथि के बाद की है।
db.species.update(
{ _id: 1 },
{ $min: { firstDiscovered: new Date("2001-01-01") } }
)
यहां, हम वर्ष को 2000
. से अपडेट करने का प्रयास करते हैं करने के लिए 2001
. यह देखते हुए कि नई तारीख मौजूदा तारीख के बाद की है, हमें निम्नलिखित मिलते हैं:
WriteResult({ "nMatched" : 1, "nUpserted" : 0, "nModified" : 0 })
कुछ भी अपडेट नहीं किया गया।
आइए संग्रह की जाँच करें:
db.species.find()
परिणाम:
{ "_id" : 1, "firstDiscovered" : ISODate("2000-01-01T00:00:00Z") }
जैसा अपेक्षित था, वही दिनांक मान बना रहता है।
आइए अब इसे पहले की तारीख से अपडेट करने का प्रयास करें।
db.species.update(
{ _id: 1 },
{ $min: { firstDiscovered: new Date("1999-01-01") } }
)
आउटपुट:
WriteResult({ "nMatched" : 1, "nUpserted" : 0, "nModified" : 1 })
हम संदेश से देख सकते हैं कि दस्तावेज़ अपडेट किया गया था।
आइए देखें।
db.species.find()
परिणाम:
{ "_id" : 1, "firstDiscovered" : ISODate("1999-01-01T00:00:00Z") }
तारीख को उम्मीद के मुताबिक अपडेट किया गया था।