रेंज सॉर्टिंग आपके लिए अच्छी तरह से काम करनी चाहिए।
db.articles.find({}).sort({ date : -1 }).limit(10);
इस के बाद आप पिछले आइटम का कहीं दुकान की तारीख की जरूरत है और अगले पेजिंग अनुरोध में आईडी का उपयोग करेगा:: सबसे पहले अनुरोध तिथि के अनुसार छाँटे पहले 10 आइटम ले जाएगा
db.articles.find({"date": {$lt: storedDateOfLastItem}}).sort({ date : -1 }).limit(10);
तो, मैं लगता है कि यह होना चाहिए आपके लिए अच्छा काम करो। पृष्ठों की कुल गणना का अनुमान लगाने के लिए आपको count का उपयोग करने की आवश्यकता होगी।
लेकिन अगर किसी भी क्रमबद्ध वस्तुओं को हटा दिया जाता है तो ऐसा असफल लगता है।
यदि आप पृष्ठ # 1 से उदाहरण आलेख को हटा देंगे तो निश्चित तिथि के लिए यह अंतिम पृष्ठ # 2 को बदल दिया जाएगा क्योंकि अंतिम तिथि बदली जाएगी। मदों की इस गणना आप अनुमान लगा सकते हैं कि वर्तमान बचाया तारीख
db.articles.find({"date": {$gt: storedDateOfLastItem}}).sort({ date : -1 }).count()
पहले था, तो इस गणना बदल गया था से बचने के लिए (मान लीजिए 2 articled हटा दिया गया था)। सी यू अगेन ऊपर अनुरोध के अंतिम आइटम से storedDateOfLastItem लेने और पेजिंग करना जारी रखने के अद्यतन storedDateOfLastItem
db.articles.find({"date": {$gt: storedDateOfLastItem}}).sort({ date : -1 }).take(2)
की जरूरत है।
लेकिन मेरी राय सिर्फ इस पेजिंग को रखें क्योंकि यह अतिरिक्त तर्क के बिना है, क्योंकि मुझे लगता है कि आलेख हटाना दुर्लभ ऑपरेशन है।
MongoDB प्रलेखन से:
पेजिंग लागत दुर्भाग्य से छोड़ हो सकता है (बहुत) महंगी और सर्वर की आवश्यकता है, संग्रह, या सूचकांक की शुरुआत से चलने के लिए ऑफसेट/छोड़ स्थिति के लिए पाने के लिए इससे पहले डेटा (सीमा) के पृष्ठ को वापस करना शुरू कर सकते हैं। चूंकि पृष्ठ संख्या बढ़ने के साथ-साथ बड़े संग्रह के साथ अधिक सीपीयू गहन, और संभावित रूप से आईओ बाध्य हो जाएगा।
रेंज आधारित पेजिंग इंडेक्स का बेहतर उपयोग प्रदान करता है लेकिन आपको आसानी से किसी विशिष्ट पृष्ठ पर जाने की अनुमति नहीं देता है।
स्रोत
2011-12-05 10:29:03
उत्तर स्वीकार करें और इस प्रश्न को बंद करें – beNerd