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

मैं मोंगो में सशर्त रूप से किसी दस्तावेज़ को कैसे ऊपर उठा सकता हूं?

संपूर्ण कार्य को परमाणु रूप से करने में सक्षम होने के अलावा, दो प्रकार की मौजूदा स्थितियां हैं जहां आप परिवर्तन करना चाहते हैं, और आप उनमें से प्रत्येक से परमाणु रूप से निपट सकते हैं:

  • कुंजी के लिए कोई रिकॉर्ड मौजूद नहीं है
  • कुंजी के लिए एक रिकॉर्ड मौजूद है और उसका update_time new_time . से पुराना है

कुंजी के लिए मौजूदा रिकॉर्ड अपडेट करें:

def update_if_stale(key, new_value, new_time):
    collection.update({'key': key,
                       'update_time': {'$lt': new_time}
                       },
                      {'$set': {'value': new_value,
                                'update_time': new_time
                                }
                       }
                      )

यदि कुंजी के लिए कोई रिकॉर्ड पहले मौजूद नहीं था तो सम्मिलित करें:

def insert_if_missing(key, new_value, new_time):
    collection.update({'key': key},
                      {'$setOnInsert': {'value': new_value,
                                        'update_time': new_time
                                        }
                       },
                      upsert=True
                      )

($setOnInsert MongoDB 2.4 में जोड़ा गया था)

आप जो चाहते हैं उसे प्राप्त करने के लिए आप उन्हें एक साथ रखने में सक्षम हो सकते हैं, उदा.:

def update_key(key, new_value, new_time):
    insert_if_missing(key, new_value, new_time)        
    update_if_stale(key, new_value, new_time)

हालांकि, आपके सिस्टम में कौन से हटाने/सम्मिलित करने के समय के पैमाने संभव हो सकते हैं, इस पर निर्भर करते हुए, आपको एकाधिक कॉल (अपडेट/सम्मिलित/अपडेट) या अन्य शीनिगन्स की आवश्यकता हो सकती है।

इसके अलावा:यदि आप चाहते हैं कि एक रिकॉर्ड गायब हो update_time अद्यतन करने के लिए एक पुराने रिकॉर्ड के रूप में माना जाने वाला फ़ील्ड, {'$lt': new_time}} बदलें करने के लिए {'$not': {'$gte': new_time}}



  1. Redis
  2.   
  3. MongoDB
  4.   
  5. Memcached
  6.   
  7. HBase
  8.   
  9. CouchDB
  1. उल्का विधि बनाम नियमों को अस्वीकार/अनुमति दें

  2. त्रुटि ई क्वेरी [थ्रेड 1] सिंटैक्स त्रुटि:अमान्य संपत्ति आईडी @ (खोल) का उपयोग करके और/या खोज के साथ ()

  3. mongo-cxx-driver का उपयोग करके c++ प्रोजेक्ट बनाते समय त्रुटियों को जोड़ना

  4. मोंगोडब में कुल लुकअप के बाद लौटाए गए उप-दस्तावेजों को कैसे पॉप्युलेट करें?

  5. mongodb में स्ट्रिंग प्रकार दिनांक को क्वेरी करें