MongoDB
 sql >> डेटाबेस >  >> NoSQL >> MongoDB

MongoDB में नेस्टेड ऑब्जेक्ट को अपडेट करें यदि यह मौजूद है, अन्यथा इसे जोड़ें

दस्तावेज़ सम्मिलित करने के लिए यदि मौजूद नहीं है तो अपरर्ट द्वारा किया जाता है और यदि आप एक सशर्त एम्बेडेड दस्तावेज़ को अपडेट करना चाहते हैं तो आपको $ पोजिशनल ऑपरेटर की आवश्यकता होती है। तो आपको उपरोक्त कार्यक्षमता को लागू करने के लिए क्वेरी में दोनों का उपयोग करने की आवश्यकता है।

लेकिन अभी मोंगोडब $ पोजिशनल ऑपरेटर के साथ अप्सर्टिंग का समर्थन नहीं करता है

तो आप जो चाहते हैं वह अभी के लिए एक प्रश्न में करना संभव नहीं है, वैकल्पिक रूप से आप इसे दो प्रश्नों में कर सकते हैं।

पहले

db.collection('ratings').update(
  {"refid":refid, "votes.ip": ip},
  {
     $set: { "votes.$.rating":rating }
  }
)

यह अद्यतन किए गए दस्तावेज़ों की संख्या लौटाता है, यदि यह 1 है तो यह ठीक है, और यदि यह 0 है तो आपको नए रिकॉर्ड को आगे बढ़ाने की आवश्यकता है।

db.collection('ratings').update( { "refid":refid, "votes.ip":{$ne: ip}},
    {$push: { votes: { "ip":ip , "rating":rating  }}
})

पोजिशनल ऑपरेटर और अप्सर्टिंग के लिए जीरा टिकट भी है, कृपया इस मुद्दे के लिए वोट करें यदि आप मोंगोडब में यह कार्यक्षमता चाहते हैं। समस्या का लिंक नीचे दिया गया है

https://jira.mongodb.org/browse/SERVER-3326

(संपादित करें :जीरा टिकट को बंद कर दिया गया था ऐसा नहीं होगा जून 2019 में)



  1. Redis
  2.   
  3. MongoDB
  4.   
  5. Memcached
  6.   
  7. HBase
  8.   
  9. CouchDB
  1. MongoDB $toUpper

  2. एकाधिक $cond के साथ क्वेरी कैसे समूहित करें?

  3. MongoDB में कर्सर.काउंट () और कर्सर.साइज़ () के बीच अंतर

  4. मोंगोडीबी $mul

  5. मोंगोडीबी में पाइमोंगो के माध्यम से रिकॉर्ड अपडेट करने से उनमें से अधिकांश को हटा दिया जाता है