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