यदि आप किसी दस्तावेज़ के मान को मनमाना मान पर सेट करना चाहते हैं, तो आप $set सिंटैक्स का उपयोग कर सकते हैं। यह या तो मान को अपडेट कर देगा यदि विशेषता पहले से ही दस्तावेज़ पर मौजूद है या यदि ऐसा नहीं है तो इसे बनाएं। यदि आपको किसी शब्दकोश में एकल मान सेट करने की आवश्यकता है, जैसा कि आप वर्णन करते हैं, तो आप बाल मानों तक पहुंचने के लिए डॉट नोटेशन का उपयोग कर सकते हैं।
यदि p प्राप्त की गई वस्तु है:
existing = p['d']['a']
पायमोंगो संस्करणों के लिए <3.0
db.ProductData.update({
'_id': p['_id']
},{
'$set': {
'd.a': existing + 1
}
}, upsert=False, multi=False)
पायमोंगो संस्करणों के लिए>=3.0
db.ProductData.update_one({
'_id': p['_id']
},{
'$set': {
'd.a': existing + 1
}
}, upsert=False)
हालाँकि, यदि आपको केवल मूल्य बढ़ाने की आवश्यकता है, तो यह दृष्टिकोण समस्याएँ पेश कर सकता है जब कई अनुरोध एक साथ चल सकते हैं। इसके बजाय आपको $inc सिंटैक्स का उपयोग करना चाहिए:
पायमोंगो संस्करणों के लिए <3.0:
db.ProductData.update({
'_id': p['_id']
},{
'$inc': {
'd.a': 1
}
}, upsert=False, multi=False)
पायमोंगो संस्करणों के लिए>=3.0:
db.ProductData.update_one({
'_id': p['_id']
},{
'$inc': {
'd.a': 1
}
}, upsert=False)
यह सुनिश्चित करता है कि आपकी वेतन वृद्धि हमेशा होती रहेगी।