2012-04-09 8 views
13

मेरे पास mongodb और nodeJs है। कनेक्शन mongoosejs के माध्यम से किया जाता है।
AJAX अनंतता स्क्रॉल विकसित करने का सबसे अच्छा तरीका क्या है? क्या मुझे सीमा और ऑफसेट का उपयोग करना चाहिए?मोंगो डीबी और नोडजेस के साथ अजाक्स पेजिनेशन करने का सबसे अच्छा तरीका क्या है?

उत्तर

33

"छोड़ें और सीमा" दृष्टिकोण बहुत प्रभावी नहीं है जब आप डेटासेट में कहीं भी पेजिंग कर रहे हैं। यह प्रभावी रूप से Shlemiel the Painter's algorithm है।

रेंज क्वेरी अधिक कुशल हैं (जब अनुक्रमणिका द्वारा समर्थित)। उदाहरण के लिए, आइए कल्पना करें कि आप ट्वीट्स प्रदर्शित कर रहे हैं। आपका पृष्ठ आकार 20 है और आप पेज 1000 पर कर रहे हैं और 1001

लोड करने के लिए पेज इस क्वेरी

db.tweets.find().sort({created_at: -1}).skip(1001*20).limit(20) 

ज्यादा से कम कुशल

db.tweets.find({created_at: {$lt: last_displayed_date}}). 
      sort({created_at: -1}).limit(20); 

(आपके द्वारा प्रदान किया है चाहता हूँ created_at पर सूचकांक है)।

आपको यह विचार मिलता है: जब आप कोई पृष्ठ लोड करते हैं, तो अंतिम ट्वीट का टाइमस्टैम्प नोट करें और अगले पृष्ठ पर क्वेरी करने के लिए इसका उपयोग करें।

+1

अलग-अलग उपयोगकर्ताओं द्वारा एक ही समय में बनाई गई कुछ ट्वीट्स होने पर क्या करना है, लेकिन मुझे उन्हें दिखाने की ज़रूरत है? –

+0

बिल्कुल वही मिलीसेकंड? मुझे ऐसा नहीं लगता। –

+1

यदि ऐसा है, तो 'create_at: -1, user_id: 1' –

संबंधित मुद्दे

 संबंधित मुद्दे