आप 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.
}