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

मोंगोडब अद्यतन सीमित संख्या में दस्तावेज़

सम्मय के अनुसार, ऐसा नहीं लगता कि ऐसा करने का कोई "उचित" तरीका है। मेरा समाधान एक मोंगो साइट पर उल्लिखित अनुक्रम और बस मेरे संग्रह में प्रत्येक रिकॉर्ड में 'seq' फ़ील्ड जोड़ें। अब मेरे पास एक अद्वितीय फ़ील्ड है जिसे अद्यतन करने के लिए विश्वसनीय रूप से क्रमबद्ध किया जा सकता है।

विश्वसनीय रूप से क्रमबद्ध यहां महत्वपूर्ण है। मैं बस ऑटो-जेनरेटेड _id पर सॉर्ट करने जा रहा था, लेकिन मुझे जल्दी से एहसास हुआ कि ऑब्जेक्ट आईडी के लिए प्राकृतिक क्रम आरोही क्रम के समान नहीं है (यह पेज ऐसा लगता है कि स्ट्रिंग मान ऑब्जेक्ट मान पर प्राथमिकता लेता है जो परीक्षण में मेरे द्वारा देखे गए व्यवहार से मेल खाता है)। साथ ही, डिस्क पर रिकॉर्ड को स्थानांतरित करना पूरी तरह से संभव है जो प्राकृतिक क्रम को छँटाई के लिए अविश्वसनीय बनाता है।

तो अब मैं रिकॉर्ड के लिए सबसे छोटे 'seq' के साथ पूछताछ कर सकता हूं जिसे एक समावेशी प्रारंभिक बिंदु प्राप्त करने के लिए पहले ही अपडेट नहीं किया गया है। इसके बाद मैं अपने शुरुआती बिंदु से अधिक 'seq' वाले रिकॉर्ड के लिए क्वेरी करता हूं और छोड़ देता हूं (इसे छोड़ना महत्वपूर्ण है क्योंकि यदि आप दस्तावेज़ हटाते हैं, तो 'seq' विरल हो सकता है ...) जितने रिकॉर्ड मैं अपडेट करना चाहता हूं। उस क्वेरी पर 1 की सीमा रखें और आपके पास एक गैर-समावेशी समापन बिंदु है। अब मैं 'अपडेटेड' =0, 'seq'>=my start point और

ये चरण फिर से हैं:

  1. findAndModify का उपयोग करके एक ऑटो-इन्क्रीमेंट अनुक्रम बनाएं
  2. अपने संग्रह में एक फ़ील्ड जोड़ें जो स्वतः-वृद्धि अनुक्रम का उपयोग करता है
  3. उपयुक्त प्रारंभिक बिंदु खोजने के लिए क्वेरी:db.xx.find({अपडेट किया गया:0})। सॉर्ट ({seq:1})। सीमा (1)
  4. एक उपयुक्त समापन बिंदु खोजने के लिए क्वेरी:db.xx.find({seq:{$gt:startSeq}}).sort({seq:1 }).स्किप(अपडेटकाउंट)।सीमा(1)
  5. शुरुआती और समाप्ति बिंदुओं का उपयोग करके संग्रह को अपडेट करें:db.xx.update({अपडेट किया गया:0, seq:{$gte:startSeq}, seq:{$lt:endSeq}, $isalated:1}, { अपडेट किया गया :1 },{बहु:सच })

बहुत दर्द होता है लेकिन काम हो जाता है।




  1. Redis
  2.   
  3. MongoDB
  4.   
  5. Memcached
  6.   
  7. HBase
  8.   
  9. CouchDB
  1. MongoDB नोड बिना किसी परिणाम के कैसे संभालें?

  2. मोंगोडब कुल नेस्टेड समूह

  3. जावा के साथ MongoDB के लिए एक गाइड

  4. Mongoid अप्रारंभीकृत स्थिर Mongo देता है

  5. मोंगोडब 3.x ड्राइवर एंड्रॉइड संगतता