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

MongoDB और ASP.NET MVC के साथ पेजिंग का कुशल तरीका

आप SetLimit का उपयोग कर सकते हैं कर्सर पर जो क्वेरी का प्रतिनिधित्व करता है। यह परिणामों को MongoDB . से सीमित कर देगा , न केवल स्मृति में:

var cursor = collection.FindAll(); // Or any other query.
cursor.SetLimit(50); // Will only return 50.
foreach (var item in cursor)
{
    // Process item.
}

आप SetSkip का भी उपयोग कर सकते हैं एक स्किप सेट करने के लिए (आश्चर्यजनक रूप से):

cursor.SetSkip(10);

नोट: आपको उन गुणों को पहले . कर्सर पर सेट करना होगा इसकी गणना कर रहा है। बाद में उन्हें सेट करने से कोई प्रभाव नहीं पड़ेगा।

वैसे, भले ही आप केवल Linq . का ही उपयोग करें का Skip और Take आप हज़ारों दस्तावेज़ों को पुनः प्राप्त नहीं कर रहे होंगे। MongoDB स्वचालित रूप से बैच आकार के अनुसार परिणाम (पहला बैच लगभग 1mb है , बाकी 4mb . हैं प्रत्येक) तो आप केवल पहला बैच प्राप्त करेंगे और उसमें से पहले 50 दस्तावेज़ लेंगे। पर अधिक

संपादित करें: मुझे लगता है कि LINQ . के बारे में कुछ भ्रम है यहाँ:

Skip और Take दोनों IEnumerable . पर विस्तार विधियां हैं और IQueryable . IEnumerable स्मृति संग्रह के लिए है, लेकिन IQueryable संचालन विशिष्ट प्रदाता द्वारा अनुवादित (इस मामले में सी # ड्राइवर)। तो उपरोक्त कोड इसके बराबर है:

foreach (var item in collection.AsQueryable().SetLimit(50))
{
    // Process item.
}



  1. Redis
  2.   
  3. MongoDB
  4.   
  5. Memcached
  6.   
  7. HBase
  8.   
  9. CouchDB
  1. MONGODB में CSV में डेटा को विभाजित और गिनते समय कोई समस्या है (कॉलमनाम जैसे कॉलम में शून्य मान होने पर :)

  2. मोंगोडब चालक:मेजबानों और विकल्पों के बीच लापता परिसीमन स्लैश

  3. MongoDB में पहले सरणी मान को किसी अन्य फ़ील्ड में कॉपी करें

  4. तो... यह नोएसक्यूएल चीज़

  5. MongoDB एकत्रीकरण संरचना में सुधार करें